Scala字符串替换符合模式的整个单词

时间:2015-06-15 09:22:45

标签: string scala scala-collections

在字符串中,如何替换以给定模式开头的单词?

例如,使用"th"

替换以"123"开头的每个单词
val in = "this is the example, that we think of"
val out = "123 is 123 example, 123 we 123 of"

即如何在保留句子的结构的同时替换整个单词(例如考虑逗号)。这不起作用,我们想念逗号,

in.split("\\W+").map(w => if (w.startsWith("th")) "123" else w).mkString(" ")
res: String = 123 is 123 example 123 we 123 of

除了标点符号外,文本还可能包含多个连续的空白。

2 个答案:

答案 0 :(得分:5)

您可以使用\bth\w*模式查找以th开头的单词,后跟其他单词字符,然后将所有匹配项替换为“123”

scala> "this is the example, that we think of, anne hathaway".replaceAll("\\bth\\w*", "123")
res0: String = 123 is 123 example, 123 we 123 of, anne hathaway

答案 1 :(得分:2)

如果我们在行中添加“while bathing”时,“replaceALL()”中的上述正则表达式可能会失败,它需要一个单词边界如下所示。

  val in = "this is the example, that we think of while bathing"
  out = in.replaceAll("\\bth\\w*", "123")
  out: String = 123 is 123 example, 123 we 123 of while bathing