[ruby-core:121698] [Ruby Feature#3388] regexp support for start_with? and end_with?

Issue #3388 has been updated by Eregon (Benoit Daloze). `end_with?(/regex/)` if it recreates a Regexp on every call would be extremely slow. Languages with such APIs have learned the hard way it's a mistake to expose such APIs creating a Regexp behind the scenes. One thing that could work is to lazily create and cache inside a Regexp object a variant of it with \z for this purpose. But it would likely increase footprint. ---------------------------------------- Feature #3388: regexp support for start_with? and end_with? https://bugs.ruby-lang.org/issues/3388#change-112750 * Author: trans (Thomas Sawyer) * Status: Feedback * Assignee: naruse (Yui NARUSE) ---------------------------------------- =begin ruby-1.9.2-head > "aBcdeFghIj".start_with?(/abc/i) => false In my implementation of start_with? it is easy enough to utilize #index, which works fine: def start_with?(pattern) index(pattern) == 0 end But #end_with? is more difficult, and I had to use regular expressions. def end_with?(suffix) suffix = Regexp.escape(suffix) if String===suffix /#{suffix}$/.match(self) ? true : false end However, we might get rid of the '? true : false' and return the MatchData, since that could be useful information. =end ---Files-------------------------------- 0001-string.c-rb_str_start_with-rb_str_end_with-allow-Reg.patch (4.08 KB) -- https://bugs.ruby-lang.org/
participants (1)
-
Eregon (Benoit Daloze)