无法从字符串数组中删除空格
Posted
技术标签:
【中文标题】无法从字符串数组中删除空格【英文标题】:Trouble removing whitespaces from string array 【发布时间】:2021-12-22 19:33:44 【问题描述】:刚开始在这里和 Kotlin 提问,
我正在为命令行应用程序制作一个简单的命令解析器。我处理输入,但在空格处拆分字符串,但它可能会导致“空数组索引”。这是我目前尝试删除它的代码,但是控制台永远不会打印“找到空白”,所以我不太确定如何去做。
var input = readLine()?.trim()?.split(" ")
input = input?.toMutableList()
println(input)
if (input != null)
for(i in input)
println("Checked")
if(i == " ")
println("Found Whitespace")
if (input != null)
input.removeAt(input.indexOf(i))
println(input)
这是一个命令的控制台,该命令将第一个数字重复第二个数字
repeat 5 5 // command
[repeat, , , 5, , 5] //what the array looks like before whitespace removal
Checked
Checked
Checked
Checked
Checked
Checked
[repeat, , , 5, , 5] //what the array looks like after whitespace removal
希望这是有道理的......
【问题讨论】:
您不应该检查""
而不是" "
吗?无论如何,从字符串本身中删除多余的空格可能会更好,或者使用正则表达式更好地分割(包括多个空格)。
您希望数组最后的样子如何?
@HenryTwist 是的,检查 "" 有效,现在实际上很有意义
【参考方案1】:
如果你想用连续的空格作为分隔符来分割字符串,你可以使用正则表达式。
val input = readLine()
if(input != null)
val words = input.trim().split(Regex(" +")) // here '+' is used to capture one or more consecutive occurrences of " "
println(words)
Try it yourself
【讨论】:
【参考方案2】:这里有一些错误,
您正在使用forEach
迭代数组并删除索引,这可能会导致 IndexOutOfBoundError
或其他一些模棱两可的行为。
你可以在这里使用filter
,
val a = listOf(" " ," " ," " ," " ,"1" ,"2" ,"3")
print( a.filterit != " " )
返回
[1, 2, 3]
playground
【讨论】:
感谢您的帮助!这对我来说效果很好,但我认为用正则表达式分割字符串会更干净一些。非常感谢以上是关于无法从字符串数组中删除空格的主要内容,如果未能解决你的问题,请参考以下文章