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

Kotlin按空格分割字符串生成的数组无法移除空白元素如何解决

问题解决说明

核心错误点

  • 你按单个空格拆分连续空格时,生成的空白元素是空字符串"",不是空格字符串" ",因此i == " "的判断条件永远不成立,移除逻辑不会执行。
  • 直接在for循环遍历MutableList的过程中删除元素,会触发索引错位,即使判断条件修正,也会出现漏删甚至数组越界问题。

解决方案

最优方案:拆分时直接过滤空元素

Kotlin的split函数自带忽略空元素的参数,无需额外写移除逻辑,修改第一行代码即可:

// 按单个空格拆分,直接忽略空元素
var input = readLine()?.trim()?.split(" ", ignoreEmpty = true)?.toMutableList()

如果要兼容命令行输入中可能出现的多空格、制表符混合场景,更推荐用正则匹配任意空白字符拆分:

// 按任意数量的空白字符拆分,适配更多输入场景
var input = readLine()?.trim()?.split("\\s+".toRegex())?.toMutableList()

替代方案:手动过滤列表

如果你确实需要对已有列表做空白元素过滤,直接使用Kotlin内置的filter函数即可,无需手写循环:

input = input?.filter { it.isNotBlank() }?.toMutableList()

测试你输入的repeat 5 5,两种方案输出均为[repeat, 5, 5],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:54:05