Domanda
Si consideri:
char [] chararray = txt1.Text;
Come lo facciamo lo stesso in Visual Basic 6.0?
Soluzione
Questo dipende da ciò che alla fine si vuole fare.
È possibile, ad esempio, fare questo in VB6:
Dim b() As Byte
b = Text1.Text
In questo modo la matrice b
verrà ridimensionata per contenere i dati Unicode da "string"
- ma poi ogni personaggio sarà diviso in due byte che probabilmente non è ciò che si desidera. Questo trucco funziona solo con Byte
.
Si può anche fare questo:
Dim b() As Byte
b = StrConv(Text1.Text, vbFromUnicode)
Ogni lettera sarà ora occupano un byte, ma i caratteri estesi sarà andato. Farlo solo se la tabella codici di sistema corrente contiene i caratteri necessari.
È possibile copiare i caratteri manualmente ad un array:
Dim s() As String, i As Long
ReDim s(1 To Len(Text1.Text))
For i = 1 To UBound(s)
s(i) = Mid$(Text1.Text, i, 1)
Next
o si può anche evitare di creare una matrice a tutti, becase Mid
serve anche come operatore indicizzatore che cambia un personaggio in atto, senza copiare o assegnare qualsiasi cosa:
Dim s As String
s = Text1.Text
Mid$(s, 3, 1) = "!"
Altri suggerimenti
Non si può fare lo stesso in VB6, in quanto non dispone di un tipo di dati carattere.
È possibile suddividere la stringa in un array di stringhe, ciascuna contenente un singolo carattere:
Dim chararray(Len(txt1.Text) - 1) As String
For i = 1 to Len(txt1.Text)
chararray(i - 1) = Mid(txt1.Text, i, 1)
Next
Modifica:
Per attraversare una stringa e sostituire i caratteri, si può semplicemente un ciclo su di essa la lunghezza e utilizzare la funzione di stringa di manipolarlo:
' Copy the value of the proeprty to a local variable
Dim text as String = txt1.Text
' Loop over the length of the string
For i = 1 to Len(text)
' Check the value of a character
If Mid(text, i, 1) = " " Then
' Replace a character
Mid(textx, i, 1) = "*"
End If
Next
VB6 ha un tipo String
quindi questo codice diventa semplicemente:
Dim x As String
x = Text1.Text
È possibile manipolare il testo sul posto e manipolare singoli caratteri utilizzando le funzioni di stringa VB6.
Nei rari casi in cui si ha realmente bisogno di una serie di codici Caracter, è necessario dichiarare una matrice Byte
(VB non ha alcun tipo char
), allora si può semplicemente assegnare la stringa la matrice, o l'uso StrConv
per gestire Unicode punti di codice diverso, come mostrato dalla @GSerg.
Public Function str2Array(xString As String) As String()
Dim tmpArray() As String
Dim tmpchar As String
' /* For Each Character In The String */
For I = 1 To Len(xString)
' /* Retrieve The Character */
tmpchar = Mid(xString, I, 1)
' /* Push It Into The Temporary Array */
spush tmpArray, tmpchar
Next I
' /* Return The Array To The Calling Procedure */
str2Array = tmpArray
End Function
È possibile ottenere il valore Unicode di ciascun carattere della stringa in questo modo:
Dim chararray (da 1 a Len (txt1.Text)) As Long
Per i = 1 a Len (txt1.Text) chararray (i) = ASCW (Mid (Text1.Text, i, 1)) Avanti