Как можно разбить строку VBA на массив символов?
Я пробовал Split(my_string, "")
, но это не сработало.
Как можно разбить строку VBA на массив символов?
Я пробовал Split(my_string, "")
, но это не сработало.
Самым простым и простым является просто цикл;
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 числа для каждого символа, поэтому Xmas преобразуется в массив байтов, содержащий {88,0,109,0,97,0,115,0}, или вы можете использовать StrConv
Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)
который даст вам {88,109,97,115}, но в этом случае вы не можете назначить массив байтов на строку.
Вы можете преобразовать числа в массиве байтов обратно в символы с помощью функции Chr()
Вот еще один способ сделать это в 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
проблема заключается в том, что нет встроенного метода (или, по крайней мере, никто из нас не смог бы его найти), чтобы сделать это в 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
Согласно этому коду для игры в гольф от Gaffi, работает следующее:
a = Split(StrConv(s, 64), Chr(0))