Разделить строку на массив символов? - программирование

Разделить строку на массив символов?

Как можно разбить строку VBA на массив символов?

Я пробовал Split(my_string, ""), но это не сработало.

4b9b3361

Ответ 1

Самым простым и простым является просто цикл;

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)

Ответ 2

Вы можете просто назначить строку массиву байтов (возможно также обратное). Результат - 2 числа для каждого символа, поэтому Xmas преобразуется в массив байтов, содержащий {88,0,109,0,97,0,115,0}, или вы можете использовать StrConv

Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)

который даст вам {88,109,97,115}, но в этом случае вы не можете назначить массив байтов на строку.
Вы можете преобразовать числа в массиве байтов обратно в символы с помощью функции Chr()

Ответ 3

Вот еще один способ сделать это в 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

Ответ 4

проблема заключается в том, что нет встроенного метода (или, по крайней мере, никто из нас не смог бы его найти), чтобы сделать это в 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