我需要查找连续字符串中是否有点。 例如
df...fd
这是无效的。 但是这个
d.f.d.d
时。 我对常客表达不太强烈,有没有人知道如何做到这一点?在斯卡拉。
答案 0 :(得分:3)
不仅适用于字符串,而且适用于其他集合类型的通用解决方案是使用sliding
方法。它基本上在集合上滑动一个固定大小的窗口,返回那些窗口的迭代器。
// string example
val s = "df..fd"
s.sliding(2) contains ".."
// list example
val list = List(1,2,3,4,5,6,2,3,7)
list.sliding(3) contains List(6,2,3)
答案 1 :(得分:2)
我会说contains
确实是检查2个连续已知字符的最佳方法。如果你坚持正则表达式,这里是sample code(记住你需要双点转义点以匹配文字点):
val pattern = "\\.{2}".r
val str = "df..d"
println(pattern findFirstIn str)
val pattern2 = "\\.{2}".r
val str2 = "df.f.d"
println(pattern2 findFirstIn str2)
println("df...fd - Офелия".contains(".."))
println("df.f.fd - Офелия".contains(".."))
输出:
Some(..)
None
true
false