在C#中,您可以执行以下操作:
string s = "1--2--3";
s.Split(new char[] {'-'}, StringSplitOptions.RemoveEmptyEntries);
而不是获得{1,,2,3},而不是{1,2,3}
我试图在VBA中做同样的事情,但我没有看到StringSplitOptions.RemoveEmptyEntries。最简单的方法是什么?
答案 0 :(得分:2)
在VBA中没有简单的方法,但删除每一个。
Public Function SplitRemoveEmptyEntries(strInput As String, strDelimiter As String) As String()
Dim strTmp As Variant
Dim sSplit() As String
Dim sSplitOut() As String
ReDim Preserve sSplitOut(0)
For Each strTmp In Split(strInput, strDelimiter)
If Trim(strTmp) <> "" Then
ReDim Preserve sSplitOut(UBound(sSplitOut) + 1)
sSplitOut(UBound(sSplitOut) - 1) = strTmp
End If
Next strTmp
ReDim Preserve sSplitOut(UBound(sSplitOut) - 1)
SplitRemoveEmptyEntries = sSplitOut
End Function
答案 1 :(得分:0)
使用您的特定示例的硬编码示例 - 不能使用三个条目
Dim arrSplit as Variant
Dim strExample as String
Dim i as Integer
strExample = "1--2--3"
arrSplit = Split(Replace(strExample,"--","),"-") ' Replace double delimiters
for i = lBound(arrSplit) to uBound(arrSplit)
Debug.Print arrSplit(i)
next