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

假设我有一个字符串:"Test me".

如何将其转换为:“测试我”

我尝试过使用:

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

但似乎 \\s 在 Kotlin 中是非法转义。

最佳答案

replace function在 Kotlin 中,对于原始字符串和正则表达式模式都有重载。

"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, " "))

https://stackoverflow.com/questions/37070352/

相关文章:

java - 使用 JPA Criteria API 进行分页的总行数

exception - Kotlin - 抛出自定义异常

kotlin - 带有 T.() 的 Kotlin 函数签名是什么意思?

java - isInitialized - lateinit var 的支持字段此时不可访问

arrays - Kotlin:For 循环必须有一个迭代器方法——这是一个错误吗?

annotations - Kotlin 注释 IntDef

kotlin - 如何在 Kotlin 中克隆对象?

java - Kotlin 文件是否应该放在 Android 中的单独源目录中?

string - 字符串中的美元符号字符

kotlin - Kotlin中调用父类(super class)构造函数,Super不是表达式