Condividi tramite


Nozioni di base sulle stringhe in Visual Basic

Il String tipo di dati rappresenta una serie di caratteri (ognuno dei quali rappresenta a sua volta un'istanza del Char tipo di dati). In questo argomento vengono presentati i concetti di base delle stringhe in Visual Basic.

Variabili stringa

A un'istanza di una stringa può essere assegnato un valore letterale che rappresenta una serie di caratteri. Per esempio:

Dim MyString As String
MyString = "This is an example of the String data type"

Una String variabile può anche accettare qualsiasi espressione che restituisce una stringa. Di seguito sono riportati esempi:

Dim OneString As String
Dim TwoString As String
OneString = "one, two, three, four, five"

' Evaluates to "two".
TwoString = OneString.Substring(5, 3)
OneString = "1"

' Evaluates to "11".
TwoString = OneString & "1"

Qualsiasi valore letterale assegnato a una String variabile deve essere racchiuso tra virgolette (""). Ciò significa che le virgolette all'interno di una stringa non possono essere rappresentate da virgolette. Ad esempio, il codice seguente causa un errore del compilatore:

Dim myString As String

' This line would cause an error.
' myString = "He said, "Look at this example!""

Questo codice genera un errore perché il compilatore termina la stringa dopo la seconda virgoletta e il resto della stringa viene interpretato come codice. Per risolvere questo problema, Visual Basic interpreta due virgolette in un letterale di stringa come una virgoletta nella stringa. Nell'esempio seguente viene illustrato il modo corretto per includere una virgoletta in una stringa:

' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""

Nell'esempio precedente le due virgolette precedenti alla parola Look diventano una virgoletta nella stringa. Le tre virgolette alla fine della riga rappresentano una virgoletta nella stringa e il carattere di terminazione della stringa.

I valori letterali stringa possono contenere più righe:

Dim x = "hello  
world"  

La stringa risultante contiene sequenze di nuova riga utilizzate nel letterale di stringa (vbcr, vbcrlf e così via). Non è più necessario usare la soluzione alternativa precedente:

Dim x = <xml><![CDATA[Hello  
World]]></xml>.Value  

Caratteri nelle stringhe

Una stringa può essere considerata come una serie di Char valori e il String tipo include funzioni predefinite che consentono di eseguire molte manipolazioni su una stringa simile alle manipolazioni consentite dalle matrici. Analogamente a tutte le matrici in .NET Framework, si tratta di matrici in base zero. È possibile fare riferimento a un carattere specifico in una stringa tramite la Chars proprietà , che consente di accedere a un carattere in base alla posizione in cui viene visualizzata nella stringa. Per esempio:

Dim myString As String = "ABCDE"
Dim myChar As Char

' The value of myChar is "D".
myChar = myString.Chars(3)

Nell'esempio precedente la Chars proprietà della stringa restituisce il quarto carattere nella stringa, ovvero D, e lo assegna a myChar. È anche possibile ottenere la lunghezza di una determinata stringa tramite la Length proprietà . Se è necessario eseguire più manipolazioni di tipi di matrice su una stringa, è possibile convertirla in una matrice di Char istanze usando la ToCharArray funzione della stringa. Per esempio:

Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray

La variabile myArray contiene ora una matrice di Char valori, ognuno dei quali rappresenta un carattere da myString.

Immutabilità delle stringhe

Una stringa non è modificabile, il che significa che il relativo valore non può essere modificato dopo la creazione. Tuttavia, ciò non impedisce di assegnare più di un valore a una variabile stringa. Si consideri l'esempio seguente:

Dim myString As String = "This string is immutable"
myString = "Or is it?"

In questo caso viene creata una variabile stringa, dato un valore e quindi viene modificato il relativo valore.

In particolare, nella prima riga viene creata un'istanza di tipo String e viene assegnato il valore This string is immutable. Nella seconda riga dell'esempio viene creata una nuova istanza e viene assegnato il valore Or is it?e la variabile stringa rimuove il riferimento alla prima istanza e archivia un riferimento alla nuova istanza.

A differenza di altri tipi di dati intrinseci, String è un tipo riferimento. Quando una variabile di tipo riferimento viene passata come argomento a una funzione o a una subroutine, viene passato un riferimento all'indirizzo di memoria in cui vengono archiviati i dati anziché il valore effettivo della stringa. Nell'esempio precedente, quindi, il nome della variabile rimane invariato, ma punta a una nuova e diversa istanza della String classe, che contiene il nuovo valore.

Vedere anche