什么是计算字符串中子字符串出现的最短方法? (药剂)

时间:2018-03-28 13:21:34

标签: string elixir

现在我一直在使用Regex.scan方法:

Regex.scan(~r/do/i, “Do. Or do not. There is no try.") |> length

在Ruby中,我们可以使用.scan方法:"Hello world".count "o" #=> 2

使用Elixir计算字符串中的子字符串是否有更短的方法?不需要花哨的正则表达式,我只需要计算字符串中的子串数。

2 个答案:

答案 0 :(得分:4)

不短,但另类:

"Hello world" |> String.graphemes |> Enum.count(& &1 == "o")

感谢@mudasobwa的惯用方式。

答案 1 :(得分:4)

另一个解决方案是按给定的子字符串拆分字符串,然后返回列表长度减去一个

len = "foo bar foobar" |> String.split("foo") |> length()
total = len - 1