From: "Eregon (Benoit Daloze) via ruby-core" Date: 2025-04-21T03:30:44+00:00 Subject: [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/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/