Kotlin如何在字符串和数字间加单个空格?现有代码仅返回数字如何解决
问题原因分析
你编写的代码使用\\D(匹配所有非数字字符)作为正则分隔符切割字符串,会直接丢弃所有非数字内容,仅保留数字片段,因此运行后只能返回数字,无法实现预期的插入空格效果。
正确实现方案
可以直接使用正则替换实现需求,匹配非数字和数字紧邻的位置,在二者之间插入空格即可:
fun addSpace(text: String): String { // 捕获「非数字字符+数字字符」的组合,替换为二者中间加空格的格式 return text.replace("(\\D)(\\d)".toRegex(), "$1 $2") }
适配扩展(可选)
如果你需要同时支持数字在前、非数字在后的场景(例如123Abc转换为123 Abc),可以调整正则如下:
fun addSpace(text: String): String { return text.replace("(\\D)(\\d)|(\\d)(\\D)".toRegex(), "$1$3 $2$4") }
效果验证
对你给出的示例输入的转换效果如下:
- 输入
Text1→ 输出Text 1 - 输入
Text10→ 输出Text 10 - 输入
Kotlin2→ 输出Kotlin 2
内容的提问来源于stack exchange,提问作者mahan
相关产品推荐
相关产品推荐

