如何在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, " "))