From: "matz (Yukihiro Matsumoto) via ruby-core" Date: 2023-01-19T05:20:53+00:00 Subject: [ruby-core:111897] [Ruby master Feature#13890] Allow a regexp as an argument to 'count', to count more interesting things than single characters Issue #13890 has been updated by matz (Yukihiro Matsumoto). If `str.count(re)` works as `str.scan(re).size` (besides efficiency), it's acceptable. But if someone needs overlapping, they needs to explain their use-case. Matz. ---------------------------------------- Feature #13890: Allow a regexp as an argument to 'count', to count more interesting things than single characters https://bugs.ruby-lang.org/issues/13890#change-101315 * Author: duerst (Martin D�rst) * Status: Open * Priority: Normal ---------------------------------------- Currently, String#count only accepts strings, and counts all the characters in the string. However, I have repeatedly met the situation where I wanted to count more interesting things in strings. These 'interesting things' can easily be expressed with regular expressions. Here is a quick-and-dirty Ruby-level implementation: ````Ruby class String alias old_count count def count (what) case what when String old_count what when Regexp pos = -1 count = 0 count += 1 while pos = index(what, pos+1) count end end end ```` Please note that the implementation counts overlapping occurrences; maybe there is room for an option like `overlap: :no`. -- 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/postorius/lists/ruby-core.ml.ruby-lang.org/