For Each循环仅读取字符串数组最后值,需批量处理Vin生成SQL字符串
问题修复:遍历数组批量格式化字符串并拼接结果
原代码存在的问题
- 变量拼写错误:
p.Conatains应为c.Contains(循环变量是c,且Contains拼写错误) - 未使用循环变量
c:调用FormatVin时没有传入当前需要处理的字符串元素,格式化逻辑完全失效 - 结果覆盖:用单个
vin变量存储结果,每次循环都会覆盖之前的值,最终仅保留最后一个元素的结果 - 语法错误:
newFormat('####'),末尾多了一个逗号,导致代码无法编译
修复后的完整代码
Dim cars As String = "New_BMWM3889;New_LEXIS600;789858;Used_VOL9998" Dim tmp As String() = cars.Split(";"c) ' 用列表存储所有格式化后的结果,避免单变量覆盖问题 Dim formattedVins As New List(Of String)() For Each c In tmp Dim formattedVin As String If c.Contains("New") Then ' 传入当前待处理元素c,按New前缀规则调用FormatVin formattedVin = FormatVin(c, "New", "@", NewFormat("0000")) Else ' 非New前缀元素按对应规则处理 formattedVin = FormatVin(c, "No Model", "&", NewFormat("####")) End If ' 将当前格式化结果加入列表 formattedVins.Add(formattedVin) Next ' 拼接所有结果为目标字符串,可直接用于SQL WHERE子句 Dim finalResult As String = String.Join(";", formattedVins)
关键改动说明
- 改用
List(Of String)收集每个元素的格式化结果,彻底解决单变量覆盖问题 - 修正所有拼写、语法错误,确保循环变量
c被正确传入FormatVin - 调用
FormatVin时传入当前待处理的元素c(匹配你期望的格式化结果逻辑,基于原字符串补充格式) - 最后用
String.Join将列表结果拼接为符合要求的完整字符串
内容的提问来源于stack exchange,提问作者JustWantsToCode
相关产品推荐
相关产品推荐

