基于数组位置拆分文本至多数组的VB代码优化需求
需求说明
- 基于数组位置获取输入内容,实现当文本行长度达到指定值时,仅在特定分隔符(如逗号、空格)处使用
vbLF换行,避免拆分单词; - 现有VB尝试代码如下:
If Len(strListOfNames) > 36 Then arrstrSplit = Split(strListOfNames, ",") '分隔符也可以是空格" ",适用于普通文本而非列表 For arrElmntNum = 0 To UBound(arrstrSplit) intLenStrName = Len(arrstrSplit(arrElmntNum)) If (intLenStrNamesPlural + intLenStrName) < 36 Then intLenStrNamesPlural = intLenStrNamesPlural + intLenStrName arrFrstNamesPlural.Add (arrstrSplit(arrElmntNum)) Else ReDim arrFrstNamesPlural(0 To arrElmntNum - 1) ReDim arrScndNamesPlural(0 To (UBound(arrstrSplit) - arrElmntNum)) For FrstArrElmntNum = 0 To (arrElmntNum - 1) arrFrstNamesPlural(FrstArrElmntNum) = arrstrSplit(FrstArrElmntNum) strFrstNamesPlural = Join(arrFrstNamesPlural, ", ") Next For ScndArrElmntNum = arrElmntNum To UBound(arrstrSplit) arrScndNamesPlural(ScndArrElmntNum - arrElmntNum) = arrstrSplit(ScndArrElmntNum) arrScndNamesPlural = Join(arrScndNamesPlural, ", "): Next End If Next End If
- 希望将代码改写为更简洁的形式,直接通过数组区间赋值完成原数组到两个目标数组的分配并跳出循环,预期代码如下:
If Len(strListOfNames) > 36 Then arrstrSplit = Split(strListOfNames, ",") For arrElmntNum = 0 To UBound(arrstrSplit) intLenStrName = Len(arrstrSplit(arrElmntNum)) If (intLenStrNamesPlural + intLenStrName) < 36 Then intLenStrNamesPlural = intLenStrNamesPlural + intLenStrName Else arrFrstBorholesStr(0 to (arrElmntNum-1)) = arrstrSplit(0 to (arrElmntNum-1)) arrFrstBorholesStr(0 to (UBound(arrstrSplit) - arrElmntNum) = arrstrSplit(arrElmntNum to UBound(arrstrSplit)) GoTo SplitIsDone_CheckIsComplete End If Next End If SplitIsDone_CheckIsComplete: '跳出For循环
内容的提问来源于stack exchange,提问作者Hallvard Skrede
相关产品推荐
相关产品推荐

