【问题标题】:How do I replace duplicate whitespaces in a String in Kotlin?如何在 Kotlin 中替换字符串中的重复空格?
【发布时间】:2016-05-06 10:42:27
【问题描述】:

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

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

我尝试过使用:

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

但似乎\\s 在 Kotlin 中是非法逃逸。

【问题讨论】:

    标签: kotlin


    【解决方案1】:

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

    【讨论】:

    • 对于正则表达式,有时最好使用""" 而不是" 作为正则表达式字符串,这样您就不必转义正则表达式的内容。
    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2017-04-03
    • 2015-12-24
    • 2020-11-08
    • 1970-01-01
    • 2013-11-21
    • 2019-04-16
    相关资源
    最近更新 更多