【问题标题】:Count all occurrences of a char within a string计算字符串中出现的所有字符
【发布时间】:2011-12-16 01:45:51
【问题描述】:

Scala 是否有一种本地方法来计算字符串中某个字符的所有出现次数?

如果是这样,我该怎么做?

如果不需要,我需要使用 Java 吗?如果是这样,我该怎么做?

谢谢!

【问题讨论】:

标签: scala


【解决方案1】:
"hello".count(_ == 'l') // returns 2

【讨论】:

  • 没有什么特别需要导入的。我已经用 2.8.2 和 2.9.1 进行了尝试,两者都按预期工作。
  • @santiagobasulto:它展示了函数式编程的美,而不仅仅是 Scala;对 Scala 给予所有的赞誉对于已经存在了几十年的许多函数式语言是不公平的。
  • @isea:你可能犯了和我一样的错误。检查以使用单引号而不是双引号来计算字符! :)
【解决方案2】:

我不使用 Scala 甚至 java,但谷歌搜索“Scala string”将我带到here

其中包含:

def
count (p: (Char) ⇒ Boolean): Int
Counts the number of elements in the string which satisfy a predicate.
p
the predicate used to test elements.
returns
the number of elements satisfying the predicate p.
Definition Classes
TraversableOnce → GenTraversableOnce

看起来很简单,但我不使用 Scala,所以不知道调用成员函数的语法。这种方式可能比需要的开销更大,因为它看起来可以搜索一系列字符。在不同的结果页面上读取字符串可以更改为字符序列,您可以轻松地循环遍历它们并增加计数器。

【讨论】:

  • 担心开销并提出更有效的解决方案实际上是过早的优化:)
【解决方案3】:

您还可以通过使用sliding,采用更高级别的方法来查看另一个字符串中出现的子字符串:

def countSubstring(str: String, sub: String): Int =
  str.sliding(sub.length).count(_ == sub)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-03
    • 2017-11-14
    • 2015-12-01
    • 2011-04-29
    • 2014-04-24
    相关资源
    最近更新 更多