将字符串拆分为字符数组?

时间:2012-11-02 12:48:57

标签: string vba char

如何将VBA字符串拆分为字符数组?

我试过Split(my_string, ""),但这不起作用。

5 个答案:

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