分裂但保留分隔符

时间:2017-12-14 15:14:14

标签: excel-vba vba excel

我一直致力于分割字符串但保留其分隔符的函数。

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")

1 个答案:

答案 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

enter image description here