vb6每N个空格拆分一个空格分隔的字符串
我有一个空格分隔的字符串变量。我想将变量的内容存储到数组中。使用split,我可以将每个空格分隔的值存储在一个数组中。我更希望能在每7个空格处分隔字符串变量。例如,文本可以是: “喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂” 这不是字符串的实际内容,而是更简单、更易于阅读的版本。我想在单词变化的地方分开,或者每隔7个空格分开。任何帮助都将不胜感激。我当前的代码看起来像这样,在每个空间都会分裂vb6每N个空格拆分一个空格分隔的字符串,vb6,split,Vb6,Split,我有一个空格分隔的字符串变量。我想将变量的内容存储到数组中。使用split,我可以将每个空格分隔的值存储在一个数组中。我更希望能在每7个空格处分隔字符串变量。例如,文本可以是: “喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂” 这不是字符串的实际内容,而是更简单、更易于阅读的版本。我想在单词变化的地方分开,或者每隔7个空格分开。任何帮助都将不胜感激。我当前的代码看起来像这样,在每个空间都会分裂 ReDim StatsArray(ArrInc)
ReDim StatsArray(ArrInc)
StatsArray = Split(Stats)
For i = 0 To UBound(StatsArray())
If i > UBound(StatsArray()) Then
ReDim Preserve StatsArray(i + ArrInc)
End If
' MsgBox StatsArray(i) ' When not commented out, this help me check the array
Next
没有任何内置函数可以为您执行此操作。我想到了几个解决方案:(1)进行拆分,然后迭代数组。在字符串变量中连接七个数组元素。将结果写入新数组。冲洗并重复。(2) 创建一个数组。一个字符一个字符地遍历字符串,将每个字符压入一个变量,并跟踪遇到的空格;当到达第七个空格时,将元素添加到数组中,将变量复制到其中,然后清除变量。冲洗并重复
第一个让我觉得快了一点,但我可能完全错了。如果我理解您的意图,一个字符串“1234 12345678 123”将被拆分为1234、1234567、8、123。这是正确的吗 如果是这样,那么您可以使用正则表达式来进行拆分
Function Split7(S As String)
Dim regex As New RegExp
regex.Pattern = "[^ ]{7}"
regex.Global = True
Split7 = Split(regex.Replace(S, "$& "), " ")
End Function
这将在每7个非空格字符后插入空格。然后使用split函数将整个内容放入一个数组。再尝试一次,不过我可能会优化
ReDim-Preserve
s,分块执行:
Option Explicit
Private Function SplitN( _
ByRef Source As String, _
ByVal Delim As String, _
ByVal N As Long) As String()
'Delim can be multi-character.
'Always returns at least 1-element result,
'even if Source = "".
Dim SearchPos As Long
Dim PartPos As Long
Dim DelimPos As Long
Dim Parts() As String
Dim DelimCount As Long
Dim PartsCount As Long
SearchPos = 1
PartPos = SearchPos
Do
DelimPos = InStr(SearchPos, Source, Delim)
If DelimPos > 0 Then
DelimCount = DelimCount + 1
If DelimCount = N Then
DelimCount = 0
ReDim Preserve Parts(PartsCount)
Parts(PartsCount) = _
Mid$(Source, PartPos, DelimPos - PartPos)
PartsCount = PartsCount + 1
PartPos = DelimPos + Len(Delim)
End If
SearchPos = DelimPos + Len(Delim)
End If
Loop While DelimPos > 0
ReDim Preserve Parts(PartsCount)
Parts(PartsCount) = Mid$(Source, PartPos)
SplitN = Parts
End Function
Private Sub Form_Load()
Dim S As String
Dim Parts() As String
Dim P As Long
S = "hello hello hello hello hello hello hello " _
& "hi hi hi hi hi hi hi " _
& "hey hey hey hey hey hey hey"
Text1.SelStart = 0
Text1.SelText = S & vbNewLine & vbNewLine
Parts = SplitN(S, " ", 7)
Text1.SelText = "Ubound() = " & UBound(Parts) & vbNewLine
For P = 0 To UBound(Parts)
Text1.SelText = Parts(P) & vbNewLine
Next
End Sub
另外,请确保将Microsoft VBScript正则表达式添加到项目中。