如何将VBA字符串拆分为字符数组?
我试过Split(my_string, "")
,但这不起作用。
答案 0 :(得分:36)
最安全&最简单的就是循环;
Dim buff() As String
ReDim buff(Len(my_string) - 1)
For i = 1 To Len(my_string)
buff(i - 1) = Mid$(my_string, i, 1)
Next
如果你保证只使用ansi字符,你可以;
Dim buff() As String
buff = Split(StrConv(my_string, vbUnicode), Chr$(0))
ReDim Preserve buff(UBound(buff) - 1)
答案 1 :(得分:14)
您可以将字符串分配给字节数组(反之亦然)。结果是每个字符有2个数字,因此Xmas转换为包含{88,0,109,0,97,0,115,0}的字节数组,或者您可以使用StrConv
Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)
将为您提供{88,109,97,115},但在这种情况下,您无法将字节数组分配回字符串。
您可以使用Chr()函数将字节数组中的数字转换回字符< / p>
答案 2 :(得分:10)
这是在VBA中执行此操作的另一种方法。
Function ConvertToArray(ByVal value As String)
value = StrConv(value, vbUnicode)
ConvertToArray = Split(Left(value, Len(value) - 1), vbNullChar)
End Function
Sub example()
Dim originalString As String
originalString = "hi there"
Dim myArray() As String
myArray = ConvertToArray(originalString)
End Sub
答案 3 :(得分:0)
问题是在vb中没有内置方法(或者至少我们没有人能找到)。但是,有一个在空格上拆分字符串,所以我只重建字符串并添加到空格....
Private Function characterArray(ByVal my_string As String) As String()
'create a temporary string to store a new string of the same characters with spaces
Dim tempString As String = ""
'cycle through the characters and rebuild my_string as a string with spaces
'and assign the result to tempString.
For Each c In my_string
tempString &= c & " "
Next
'return return tempString as a character array.
Return tempString.Split()
End Function
答案 4 :(得分:0)
根据this code golfing solution by Gaffi,以下工作有效:
this.todo(dispatch)