2012-11-02 11 views

risposta

25

più sicuro & semplice è quello di solo ciclo;

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 

Se è possibile utilizzare solo caratteri ansi, è possibile;

Dim buff() As String 
buff = Split(StrConv(my_string, vbUnicode), Chr$(0)) 
ReDim Preserve buff(UBound(buff) - 1) 
+0

Cosa faremmo quando usiamo Unicode? – mgae2m

8

Ecco un altro modo per farlo in VBA.

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

È possibile assegnare la stringa a un array di byte (è possibile anche il contrario). Il risultato è 2 numeri per ogni carattere, in modo natale converte in un array di byte contenente {} 88,0,109,0,97,0,115,0
oppure è possibile utilizzare StrConv

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

che vi darà {88.109, 97,115} ma in questo caso non è possibile assegnare l'array di byte a una stringa.
È possibile convertire i numeri nell'array di byte in caratteri utilizzando la funzione Chr()

0

il problema è che non esiste alcun metodo integrato (o almeno nessuno di noi potrebbe trovarne uno) per farlo in vb. Tuttavia, ce n'è uno per dividere una stringa negli spazi, quindi ricostruisco semplicemente la stringa e aggiunta negli spazi ....

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 
Problemi correlati