如何使用Arrays和Split()函数移除字符串连续空格?现有代码未达预期
解决连续空格移除问题(仅用Split和数组操作)
嘿,我来帮你排查下代码的问题,顺便给出修复方案~
首先说下你当前代码为啥没效果:当你用Split(sta, " ")处理带连续空格的字符串时,连续的空格会被拆分成空字符串元素。比如输入"This is a wrong String",拆分后的数组会是["This", "", "is", "", "", "a", "wrong", "String"]。你原来的循环是把每个元素(包括空的)都加上空格拼接,空元素加空格就等于直接加空格,自然就保留了连续空格的问题,输出和输入也就没区别啦。
按照你的要求,只用Split和数组操作,我给你修改后的代码:
Function RemoveS(sta As String) As String Dim Warray() As String Dim sp As String = " " Dim EndStr As String = "" Warray = Split(sta, sp) For i = 0 To UBound(Warray) ' 跳过拆分出来的空字符串元素 If Warray(i) <> "" Then ' 如果结果字符串已有内容,先加分隔空格再追加元素 If EndStr <> "" Then EndStr = EndStr + sp End If EndStr = EndStr + Warray(i) End If Next i RemoveS = EndStr End Function
代码逻辑说明:
- 先用
Split把字符串按空格拆分成数组,连续空格会生成空字符串元素 - 遍历数组时,跳过所有空字符串元素,只处理有实际内容的部分
- 拼接元素时做判断:如果结果字符串已有内容,先加一个单空格再追加元素;如果是第一个元素,直接追加
- 最终返回的字符串就是单空格分隔的格式,没有连续空格,也不会有末尾多余空格
测试你给的示例:输入"This is a wrong String",调用这个函数后就能得到预期的"This is a wrong String"啦~
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

