Comment est-il possible de scinder une chaîne VBA en un tableau de caractères?
J'ai essayé Split(my_string, "")
mais cela n'a pas fonctionné.
Le plus simple et le plus sûr est de simplement boucler;
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
Si vous êtes assuré d'utiliser uniquement des caractères ansi, vous le pouvez;
Dim buff() As String
buff = Split(StrConv(my_string, vbUnicode), Chr$(0))
ReDim Preserve buff(UBound(buff) - 1)
Vous pouvez simplement assigner la chaîne à un tableau d'octets (l'inverse est également possible). Le résultat est 2 nombres pour chaque caractère, donc Xmas est converti en tableau d'octets contenant {88,0,109,0,97,0,115,0}
ou vous pouvez utiliser StrConv
Dim bytes() as Byte
bytes = StrConv("Xmas", vbFromUnicode)
ce qui vous donnera {88,109,97,115}, mais dans ce cas, vous ne pouvez pas affecter le tableau d'octets à une chaîne.
Vous pouvez reconvertir les nombres du tableau d'octets en caractères à l'aide de la fonction Chr ().
Voici une autre façon de le faire dans 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
le problème est qu'il n'y a pas de méthode intégrée (ou du moins aucun d'entre nous n'a pu en trouver une) pour le faire en vb. Cependant, il y en a un pour diviser une chaîne sur les espaces, alors je viens de reconstruire la chaîne et de l'ajouter dans des espaces ....
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