检查字符串是否在一行中具有相同的字符

时间:2015-04-10 19:43:09

标签: regex scala

我需要查找连续字符串中是否有点。 例如

df...fd

这是无效的。 但是这个

d.f.d.d

时。 我对常客表达不太强烈,有没有人知道如何做到这一点?在斯卡拉。

2 个答案:

答案 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