在字符串中,如何替换以给定模式开头的单词?
例如,使用"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
除了标点符号外,文本还可能包含多个连续的空白。
答案 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