如果一个给定的字符串包含一个给定的子字符串,那么常用的 scala 方法是什么?

在 scala 中有两个字符串,我想知道大的字符串(needle)是否包含小的字符串(haystack)。

我发现正在使用 regexp 和类似的匹配(从这个问题) :

needle.r.pattern.matcher(haystack).matches

对于这样一个简单的问题来说(1)太复杂了,但是更重要的是,(2)对我不起作用,因为

"needle".r.pattern.matcher("Finding needle in haystack").matches

报税表

Boolean = false

99802 次浏览

如果您想要以最高的效率完成它,那么您可能必须自己编写它(或者在某个地方找到一个好的子字符串搜索算法)。如果你只是想让它工作,那么在 Scala 中:

scala> "Finding needle in haystack" contains "needle"
res0: Boolean = true


scala> "Finding needle in haystack" indexOf "needle"
res1: Int = 8

这些是 没有正则表达式搜索。您也没有正确地使用正则表达式匹配(edit: 因为该代码要求与整个字符串完全匹配,而不是查找匹配的子字符串) ,但这是另一个问题。如果需要计算匹配的数量,可以执行以下操作

scala> "needle".r.findAllIn("Finding needle in haystack").length
res2: Int = 1

虽然回答我认为我也会提供这个正则表达式样式

scala> "I have a needle in my haystack" matches ".*needle.*"
res10: Boolean = true