You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中使用"\\s".toRegex()拆分字符串不生效的原因是什么

问题解答

\\s 正则本身的匹配规则是单个空白字符,单次仅匹配1个空格、制表符、换行符等空白类字符。你测试用的字符串里test1和test2之间有4个连续空格、test2和test3之间有3个连续空格,用\\s拆分时,每一个独立的空格都会被识别为一个分隔符,连续N个空格就会生成N-1个空字符串的拆分结果,最终条目数自然会超过3个。

举个简单的例子:对字符串"a b"(两个空格间隔)用"\\s".toRegex()拆分,得到的结果会是["a", "", "b"],多余的空条目就是连续空格被逐一切割带来的。

你更换的" +"正则逻辑完全不同:+是正则量词,代表匹配前面的规则1次及以上,所以" +"会把连续的任意多个空格当做一个整体分隔符处理,不管中间有多少个连续空格都只会切割一次,不会生成多余空条目,自然能得到你预期的3个拆分结果。

如果需要兼容混合了制表符、换行等其他空白类型的场景,也可以用"\\s+".toRegex()做拆分,效果和" +"一致但覆盖的空白类型更全。

内容的提问来源于stack exchange,提问作者Ganesh Hegde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:15:06