说我有一个字符串:"Test me"
。
如何将其转换为:"Test me"
?
我尝试过使用:
string?.replace("\\s+", " ")
但似乎\\s
在Kotlin是非法逃脱。
答案 0 :(得分:57)
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, " "))