【发布时间】:2016-05-06 10:42:27
【问题描述】:
假设我有一个字符串:"Test me"。
如何将其转换为:"Test me"?
我尝试过使用:
string?.replace("\\s+", " ")
但似乎\\s 在 Kotlin 中是非法逃逸。
【问题讨论】:
标签: kotlin
假设我有一个字符串:"Test me"。
如何将其转换为:"Test me"?
我尝试过使用:
string?.replace("\\s+", " ")
但似乎\\s 在 Kotlin 中是非法逃逸。
【问题讨论】:
标签: kotlin
Kotlin 中的replace function 具有原始字符串和正则表达式模式的重载。
"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, " "))
【讨论】:
""" 而不是" 作为正则表达式字符串,这样您就不必转义正则表达式的内容。