2012-11-02 10 views

Antwort

25

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) 
+0

Was würden wir tun, wenn Unicode verwendet wird? – mgae2m

8

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 
11

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()

0

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.

Verwandte Themen