Wie ist es möglich, eine VBA-Zeichenfolge in ein Array von Zeichen aufzuteilen?Zeichenfolge in ein Array von Zeichen aufteilen?
Ich versuchte Split(my_string, "")
, aber das hat nicht funktioniert.
Wie ist es möglich, eine VBA-Zeichenfolge in ein Array von Zeichen aufzuteilen?Zeichenfolge in ein Array von Zeichen aufteilen?
Ich versuchte Split(my_string, "")
, aber das hat nicht funktioniert.
Safest & einfachste ist, einfach Schleife;
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
Wenn Sie garantiert nur ANSI-Zeichen verwenden, können Sie;
Dim buff() As String
buff = Split(StrConv(my_string, vbUnicode), Chr$(0))
ReDim Preserve buff(UBound(buff) - 1)
Hier ist eine andere Möglichkeit, es in VBA zu tun.
Function CharacterArray(value As String)
value = StrConv(value, vbUnicode)
CharacterArray = Split(Left(value, Len(value) - 1), vbNullChar)
End Function
Sub example()
Dim d As String
Dim myArray()
myArray = CharacterArray("hi there")
End Sub
Sie können die Zeichenfolge nur einem Byte-Array zuweisen (das Umgekehrte ist auch möglich). Das Ergebnis ist 2 Zahlen für jedes Zeichen, so Weihnachts wandelt in einen Byte-Array enthält, {} 88,0,109,0,97,0,115,0
oder man StrConv
Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)
die Sie kann {88.109, 97,115}, aber in diesem Fall können Sie das Byte-Array nicht einer Zeichenfolge zuordnen.
Sie können die Zahlen in der Byte-Array mit der Funktion Chr()
zurück in Zeichen konvertieren das Problem ist, dass es keine integrierte Methode (oder zumindest keiner von uns könnte eine finden), dies in VB zu tun. Es gibt jedoch eine, die eine Zeichenfolge in die Leerzeichen aufteilt, also erstelle ich die Zeichenfolge einfach neu und fügt Leerzeichen hinzu.
Was würden wir tun, wenn Unicode verwendet wird? – mgae2m