我在scala中有两个字符串,我想知道,如果较大的string(needle)包含一个较小的字符串(haystack).
我发现用regexps和匹配这样做(来自这个问题):
needle.r.pattern.matcher(haystack).matches
对于这样一个简单的问题,这是(1)非常复杂,但更重要的是,(2)对我不起作用,因为
"needle".r.pattern.matcher("Finding needle in haystack").matches
回报
Boolean = false
Rex*_*err 103
如果你想以最高效率做到这一点,你可能必须自己编写(或者在某处找到一个好的子串搜索算法).如果你只想让它工作,那么在Scala中:
scala> "Finding needle in haystack" contains "needle"
res0: Boolean = true
scala> "Finding needle in haystack" indexOf "needle"
res1: Int = 8
Run Code Online (Sandbox Code Playgroud)
这些不是正则表达式搜索.你没有正确使用正则表达式匹配(编辑:因为该代码要求与整个字符串完全匹配,而不是找到匹配的子字符串),但这是一个不同的问题.如果你想要一个匹配数的计数,你可以做类似的事情
scala> "needle".r.findAllIn("Finding needle in haystack").length
res2: Int = 1
Run Code Online (Sandbox Code Playgroud)
Nei*_*ers 18
虽然回答我认为我也会提供这种正则表达式的风格
scala> "I have a needle in my haystack" matches ".*needle.*"
res10: Boolean = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70416 次 |
| 最近记录: |