Kotlin中如何更简便统计含重复分隔符的字符串token数量?
Kotlin 统计含重复分隔符字符串的Token数量
针对连续空格导致split()生成空字符串的问题,有几种简洁的解决方式:
方法1:正则分隔符分割
利用正则匹配一个或多个连续空格作为分隔符,直接分割后获取数组长度即可:
val msg = "The cat won't stay away from the chickens." val tokenCount = msg.split(Regex("\\s+")).size // tokenCount = 8
- 若只需匹配空格(排除制表符、换行等其他空白字符),把
\\s+换成+即可。 - 如果字符串首尾可能有空格,先
trim()再分割避免空字符串:val tokenCount = msg.trim().split(Regex("\\s+")).size
方法2:直接匹配所有非空白Token
用正则匹配所有连续的非空白字符,统计匹配结果的数量,无需生成中间数组,效率更高:
val tokenCount = Regex("\\S+").findAll(msg).count() // tokenCount = 8
方法3:简化原逻辑(不推荐,但适合理解)
如果不想用正则,也可以用一行代码简化你原来的循环逻辑:
val tokenCount = msg.split(' ').count { it.isNotEmpty() }
内容的提问来源于stack exchange,提问作者Carmen DiMichele
相关产品推荐
相关产品推荐

