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

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

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

我试过使用:

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

但似乎是Kotlin的非法逃跑。

Kotlin中的replace函数对于原始字符串和正则表达式都有重载。

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

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

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

这一行用一个空格替换多个空格。 注意显式toRegex()调用,它从一个String产生一个正则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, " "))