【问题标题】:Kotlin - add a single space between string and numberKotlin - 在字符串和数字之间添加一个空格
【发布时间】:2023-02-01 18:38:12
【问题描述】:

我有以下文本。我需要在字符串和数字之间添加一个空格。

Text1 -> Text 1

Text10 -> Text 10

Kotlin2 -> Kotlin 2

我使用了以下代码,但它不起作用。

fun addSpace(text: String): String {
   return text.split("\\D".toRegex()).joinToString(separator = " ") { it  }
}

它只返回数字。

【问题讨论】:

  • 添加到实际答案中:此代码失败的原因是因为它正在分裂非数字,因此丢弃它们,只留下数字。

标签: kotlin


【解决方案1】:

您可以将任何出现的一串数字替换为一个空格,后跟这些数字:

fun addSpace(text: String) = text.replace(Regex("\d+" ), " $0")

$ 被转义,以便 Kotlin 编译器不会将其视为插值。)

【讨论】:

    【解决方案2】:

    您可以使用正则表达式组和 replaceAll

    fun main() {
        val input = "Text1 Text10 Kotlin2"
        val pattern = Pattern.compile("([a-zA-Z]+)([0-9]+)")
        val matcher = pattern.matcher(input).replaceAll("$1 $2")
        println(matcher)
    }
    

    输出将是

    Text 1 Text 10 Kotlin 2

    【讨论】:

      【解决方案3】:

      感谢您的解决方案!我为此搜索了很多,终于找到了。这对我很有用

      【讨论】:

      • 请不要添加谢谢作为答案。它们实际上并没有提供问题的答案,并且可能被未来的访问者视为噪音。一旦你earn足够reputation,你将获得你喜欢的upvote answers的特权。这样问题的未来访问者将看到对该答案的更高投票计数,并且回答者也将获得声誉点数奖励。参见Why is voting important