我一直致力于分割字符串但保留其分隔符的函数。
Function SplitButRetainDelims(ByVal text As String, ByVal delimiters As String) As String()
Dim Arr() As String, currentDelim As String
Dim i As Long
For i = 1 To Len(delimiters)
currentDelim = Mid$(delimiters, i, 1)
Arr = Split(Replace(text, currentDelim, currentDelim & "~"), "~")
Next
SplitButRetainDelims = Arr
End Function
问题在于我现在的方式,
Arr = Split(Replace(text, currentDelim, currentDelim & "~"), "~")
每次只使用当前分隔符的分割,将覆盖Array。因此,不是保持先前迭代所取得的进展,而是重置。
我之前几乎已经达到了一个可接受的解决方案,但它过于复杂,无法提供太多的好处。
编辑:示例
SplitButRetainDelims("potato (onion/soup / Green BEANS", " ()/")
= ("potato", " ", "(", "onion", "/", "soup", " ", "/", "Green", " ", "BEANS")
答案 0 :(得分:2)
Function SplitButRetainDelims(ByVal text As String, ByVal delimiters As String) As String()
Dim Arr() As String, currentDelim As String
Dim i As Long
For i = 1 To Len(delimiters)
currentDelim = Mid$(delimiters, i, 1)
text = Replace(text, currentDelim, "~" & currentDelim & "~")
Next
text = Replace(text, "~~", "~")
Arr = Split(text, "~")
SplitButRetainDelims = Arr
End Function