VB.Net两个逗号分隔字符串交叉拼接插入元素报错问题求解
问题原因分析
你现有代码的核心问题有两个:
- 直接在原始字符串上执行插入操作会动态改变字符串总长度,你固定使用
index + 2计算插入位置的逻辑仅对首次插入生效,后续插入的偏移量会随着前面的插入操作不断变大,首元素异常就是因为首个元素对应的插入位置计算错误 - 没有处理两个输入序列长度不一致的边界情况,若其中一个序列元素更多会出现索引越界错误
修正后实现代码
直接交替合并两个拆分后的数组,不需要操作原字符串插入,逻辑更稳定:
' 拆分两个输入字符串为数组,自动过滤末尾空元素 Dim strWordsA() As String = TextBox1.Text.Split({","c}, StringSplitOptions.RemoveEmptyEntries) Dim strWordsB() As String = TextBox2.Text.Split({","c}, StringSplitOptions.RemoveEmptyEntries) Dim resultList As New List(Of String)() ' 取两个数组的最大长度作为循环上限,兼容长度不一致的情况 Dim maxLength As Integer = Math.Max(strWordsA.Length, strWordsB.Length) For i As Integer = 0 To maxLength - 1 ' 数组A还有剩余元素就添加 If i < strWordsA.Length Then resultList.Add(strWordsA(i)) End If ' 数组B还有剩余元素就添加 If i < strWordsB.Length Then resultList.Add(strWordsB(i)) End If Next ' 拼接结果输出到TextBox3 TextBox3.Text = String.Join(",", resultList)
效果验证
输入TextBox1.Text = "1,2,3,4,5,6,7,8,9"、TextBox2.Text = "a,b,c,f,d,b,i,h,"时,输出结果为1,a,2,b,3,c,4,f,5,d,6,b,7,i,8,h,9,完全符合需求。
内容的提问来源于stack exchange,提问作者Bianca Mada
相关产品推荐
相关产品推荐

