如何替换Kotlin中字符串中的重复空格?

如何替换Kotlin中字符串中的重复空格?,kotlin,Kotlin,假设我有一个字符串:“测试我” 如何将其转换为:“测试我” 我试过使用: string?.replace("\\s+", " ") 但在Kotlin中,\\s似乎是非法转义。在Kotlin中,原始字符串和正则表达式模式都有重载 "Test me".replace("\\s+", " ") 这将替换问题所在的原始字符串\s+ "Test me".replace("\\s+".toRegex(), " ") 此行用一个空格替换多个空格。 注意显式调用,它从字符串生成Regex,从而将重载指

假设我有一个字符串:
“测试我”

如何将其转换为:
“测试我”

我试过使用:

string?.replace("\\s+", " ")
但在Kotlin中,
\\s
似乎是非法转义。

在Kotlin中,原始字符串和正则表达式模式都有重载

"Test  me".replace("\\s+", " ")
这将替换问题所在的原始字符串
\s+

"Test  me".replace("\\s+".toRegex(), " ")
此行用一个空格替换多个空格。 注意显式调用,它从
字符串
生成
Regex
,从而将重载指定为
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, " "))

对于正则表达式字符串,有时最好使用
而不是
,这样就不必转义正则表达式的内容。