如何在Kotlin中替换String中的重复空格?

时间:2016-05-06 10:42:27

标签: kotlin

说我有一个字符串:"Test me"

如何将其转换为:"Test me"

我尝试过使用:

string?.replace("\\s+", " ")

但似乎\\s在Kotlin是非法逃脱。

1 个答案:

答案 0 :(得分:57)

Kotlin中的

replace function对原始字符串和正则表达式模式都有重载。

"Test  me".replace("\\s+", " ")

这会替换原始字符串\s+,这就是问题所在。

"Test  me".replace("\\s+".toRegex(), " ")

此行用一个空格替换多个空格。 请注意显式的toRegex()调用,它会从Regex生成String,从而将带有Regex的重载指定为模式。

还有一个过载,允许您从比赛中产生替补。例如,要用遇到的第一个空格替换它们,请使用:

"Test\n\n  me".replace("\\s+".toRegex()) { it.value[0].toString() }

<小时/> 顺便说一句,如果重复操作,请考虑将模式结构移出重复代码以提高效率:

val pattern = "\\s+".toRegex()

for (s in strings)
    result.add(s.replace(pattern, " "))