如何替换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, " "))
对于正则表达式字符串,有时最好使用
“
而不是”
,这样就不必转义正则表达式的内容。