Count occurrences of a substring: Difference between revisions
Content added Content deleted
(added ocaml) |
|||
Line 369: | Line 369: | ||
<pre>3 |
<pre>3 |
||
2</pre> |
2</pre> |
||
=={{header|Mirah}}== |
|||
<lang mirah>import java.util.regex.Pattern |
|||
import java.util.regex.Matcher |
|||
#The "remove and count the difference" method |
|||
def count_substring(pattern:string, source:string) |
|||
(source.length() - source.replace(pattern, "").length()) / pattern.length() |
|||
end |
|||
puts count_substring("th", "the three truths") # ==> 3 |
|||
puts count_substring("abab", "ababababab") # ==> 2 |
|||
puts count_substring("a*b", "abaabba*bbaba*bbab") # ==> 2 |
|||
# The "split and count" method |
|||
def count_substring2(pattern:string, source:string) |
|||
# the result of split() will contain one more element than the delimiter |
|||
# the "-1" second argument makes it not discard trailing empty strings |
|||
source.split(Pattern.quote(pattern), -1).length - 1 |
|||
end |
|||
puts count_substring2("th", "the three truths") # ==> 3 |
|||
puts count_substring2("abab", "ababababab") # ==> 2 |
|||
puts count_substring2("a*b", "abaabba*bbaba*bbab") # ==> 2 |
|||
# This method does a match and counts how many times it matches |
|||
def count_substring3(pattern:string, source:string) |
|||
result = 0 |
|||
Matcher m = Pattern.compile(Pattern.quote(pattern)).matcher(source); |
|||
while (m.find()) |
|||
result = result + 1 |
|||
end |
|||
result |
|||
end |
|||
puts count_substring3("th", "the three truths") # ==> 3 |
|||
puts count_substring3("abab", "ababababab") # ==> 2 |
|||
puts count_substring3("a*b", "abaabba*bbaba*bbab") # ==> 2 |
|||
</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |