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

VB.NET:如何用单循环实现拆分变量?现有嵌套循环问题咨询

解决VB中嵌套For Each循环重复匹配的问题

你现在的嵌套For Each循环会把每个产品和每个价格都交叉配对一遍——这肯定不是你想要的效果对吧?毕竟产品和价格应该是一一对应的,所以我们只需要按索引遍历一次数组就好,完全不需要嵌套循环。

问题根源

你的代码里,外层循环遍历所有产品,内层循环遍历所有价格,这样会生成产品数量 × 价格数量行数据,而不是每个产品对应一个价格的正确行。

解决方案:按索引遍历数组

我们可以先把产品和价格都分割成字符串数组,然后通过索引来一一匹配,只需要一次循环就搞定:

' 先把当前行的产品和价格分割成数组
Dim productsArray As String() = Form1.DataGridView1.CurrentRow.Cells(2).Value.ToString.Split(", ")
Dim pricesArray As String() = Form1.DataGridView1.CurrentRow.Cells(4).Value.ToString.Split(", ")

' 取两个数组中较短的长度,避免索引越界
Dim maxIndex As Integer = Math.Min(productsArray.Length, pricesArray.Length) - 1

' 按索引循环,一一对应产品和价格
For i As Integer = 0 To maxIndex
    Dim product As String = productsArray(i).Trim() ' 去除可能的空格
    Dim price As String = pricesArray(i).Trim()
    
    Products.AppendLine(String.Format(" <tr>{0} <td>{1}</td>{0} <td align=""center"">{2}</td>{0} </tr>", Environment.NewLine, product, price))
Next

额外说明

  1. 处理数组长度不一致:用Math.Min取较短数组的长度,避免出现索引越界的错误(比如产品数量和价格数量不相等的情况)。
  2. Trim()处理:加上.Trim()可以去掉分割后字符串两端可能存在的空格,让最终生成的HTML数据更干净。
  3. 性能优化:这种按索引遍历的方式只需要一次循环,不仅逻辑更清晰,运行效率也比嵌套循环高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:25:21