Classe String
TOC
Comprimi il sommario
Espandi il sommario

Classe String

Rappresenta testo come una serie di caratteri Unicode.

Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class String : IComparable, ICloneable, IConvertible, 
	IComparable<string>, IEnumerable<string>, IEnumerable, 
	IEquatable<string>
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class String implements IComparable, ICloneable, 
	IConvertible, IComparable<String>, IEnumerable<String>, 
	IEnumerable, IEquatable<String>
SerializableAttribute 
ComVisibleAttribute(true) 
public final class String implements IComparable, ICloneable, 
	IConvertible, IComparable<String>, IEnumerable<String>, 
	IEnumerable, IEquatable<String>

Una stringa è un insieme sequenziale di caratteri Unicode, tipicamente utilizzato per rappresentare testo. Un oggetto String è un insieme sequenziale di oggetti System.Char che rappresentano una stringa. Il valore dell'oggetto String è dato dal contenuto dell'insieme sequenziale e non è modificabile.

L'oggetto String si definisce non modificabile, ovvero in sola lettura, perché una volta che è stato creato non è possibile cambiarne il valore. I metodi che sembrano modificare un oggetto String in realtà restituiscono un nuovo oggetto String contenente la modifica. Se è necessario modificare i contenuti effettivi di un oggetto tipo stringa, utilizzare la classe System.Text.StringBuilder.

Ciascun carattere Unicode di una stringa è definito da un valore scalare Unicode, definito anche punto di codice Unicode ovvero valore (numerico) ordinale del carattere Unicode. Tutti i punti di codice vengono codificati utilizzando la codifica UTF-16 e il valore numerico di ciascun elemento della codifica è rappresentato da un oggetto Char.

Un singolo oggetto Char solitamente rappresenta un singolo punto di codice, ovvero il valore numerico dell'oggetto Char equivale al punto di codice. È tuttavia possibile che un punto di codice richieda più di un elemento codificato. Un punto di codice Unicode supplementare (una coppia di surrogati) viene ad esempio codificato con due oggetti Char.

Indici

Un indice è la posizione di un oggetto Char, non di un carattere Unicode, in un oggetto String. Si tratta di un numero non negativo a base zero che parte dalla prima posizione della stringa, la posizione di indice zero. Valori di indice consecutivi non corrispondono necessariamente a caratteri Unicode consecutivi, dal momento che un carattere Unicode può essere codificato in più di un oggetto Char. Per utilizzare i singoli caratteri Unicode invece dei singoli oggetti Char, utilizzare la classe System.Globalization.StringInfo.

Operazioni ordinali e operazioni sensibili alla lingua

I membri della classe String eseguono operazioni ordinali o linguistiche su un oggetto String. Un'operazione ordinale agisce sul valore numerico di un oggetto Char. Un'operazione linguistica, invece, agisce sul valore dell'oggetto String tenendo conto delle regole specifiche della lingua relative all'utilizzo di maiuscole e minuscole, alla formattazione, all'ordinamento e all'analisi. Le operazioni linguistiche vengono eseguite nel contesto di una lingua dichiarata in modo esplicito o della lingua corrente implicita. Per ulteriori informazioni sulla lingua corrente, vedere l'argomento CultureInfo.CurrentCulture.

Le regole relative all'utilizzo di maiuscole e minuscole determinano le modalità di modifica di un carattere Unicode, ad esempio da minuscolo a maiuscolo.

Le regole di formattazione stabiliscono le modalità di conversione di un valore nella relativa rappresentazione di stringa; le regole di analisi, viceversa, determinano le modalità di conversione di una rappresentazione di stringa in un valore.

Le regole di ordinamento determinano l'ordine alfabetico dei caratteri Unicode e le modalità di confronto fra due stringhe. Il metodo Compare, ad esempio, consente di eseguire un confronto linguistico mentre il metodo CompareOrdinal consente di eseguire un confronto ordinale. Così, se la lingua corrente è l'inglese americano, il metodo Compare considererà "a" minore di "A", mentre il metodo CompareOrdinal considererà "a" maggiore di "'A".

.NET Framework supporta le regole di ordinamento per parola, per stringa e ordinale. Un ordinamento per parola consente di eseguire un confronto basato sulla lingua tra stringhe in cui a determinati caratteri Unicode non alfanumerici potrebbero essere assegnati determinati pesi. Il trattino "-", ad esempio, potrebbe avere un peso minimo, così che "coop" e "co-op" possano risultare vicini in un elenco ordinato. L'ordinamento per stringa è simile a quello per parola, salvo che per il fatto che non prevede casi particolari e tutti i simboli non alfanumerici precedono nell'ordinamento tutti i caratteri alfanumerici Unicode.

Un confronto sensibile alla lingua è un qualsiasi confronto che utilizza in modo esplicito o implicito un oggetto CultureInfo, compresa la lingua inglese specificata dalla proprietà CultureInfo.InvariantCulture. La lingua implicita corrente è specificata dalla proprietà Thread.CurrentCulture.

Con l'ordinamento ordinale le stringhe vengono confrontate in base al valore numerico di ciascun oggetto Char presente nella stringa. Un confronto ordinale esegue automaticamente la distinzione tra maiuscole e minuscole poiché la versione maiuscola e quella minuscola di un carattere hanno punti di codice diversi. Tuttavia, se la distinzione tra maiuscole e minuscole non è importante per l'applicazione, è possibile specificare un confronto ordinale che ignori tale distinzione. Questa operazione equivale alla conversione della stringa in lettere maiuscole tramite la lingua inglese e alla successiva esecuzione di un confronto ordinale sul risultato.

Per ulteriori informazioni sulle regole di ordinamento per parola, per stringa e ordinale, vedere l'argomento System.Globalization.CompareOptions.

Un confronto sensibile alla lingua è in genere appropriato per l'ordinamento, a differenza di un confronto ordinale. Un confronto ordinale è in genere appropriato per determinare se due stringhe sono uguali (ovvero per determinare l'identità), a differenza di un confronto sensibile alla lingua.

Nelle note relative al confronto e ai metodi di ricerca viene specificato se il metodo rileva la distinzione tra maiuscole e minuscole e/o è sensibile alla lingua. Per definizione, qualsiasi stringa, compresa la stringa vuota (""), risulta maggiore di un riferimento null, mentre due riferimenti null risultano uguali tra loro.

Normalizzazione

Alcuni caratteri Unicode hanno più rappresentazioni binarie equivalenti formate da insiemi di caratteri Unicode combinati e/o compositi. Nello standard Unicode viene definito un processo denominato normalizzazione che restituisce una rappresentazione binaria quando viene fornita qualsiasi rappresentazione binaria equivalente di un carattere. La normalizzazione può essere eseguita con diversi algoritmi, denominati formati di normalizzazione, che rispettano regole diverse. .NET Framework supporta attualmente i formati di normalizzazione C, D, KC e KD. Una coppia di stringhe normalizzate viene tipicamente valutata con un confronto ordinale.

Considerazioni sulla protezione

Se in un'applicazione viene presa una decisione relativa alla protezione riguardo a un identificatore simbolico, quale un nome di file o una named pipe, o riguardo a dati mantenuti, quali i dati basati su testo in un file XML, l'operazione deve utilizzare un confronto ordinale anziché un confronto sensibile alla lingua. Il motivo risiede nel fatto che un confronto sensibile alla lingua può restituire risultati diversi in base alla lingua attiva, mentre un confronto ordinale dipende esclusivamente dal valore binario dei caratteri confrontati.

Funzionalità

La classe String dispone di membri per confrontare oggetti String, restituire l'indice di un carattere o di una stringa in un oggetto String, copiare il valore di un oggetto String, eseguire la partizione di una stringa o la combinazione di più stringhe, modificare il valore di una stringa, convertire numeri, date e ore o valori di enumerazione in formato stringa e normalizzare una stringa.

  • Utilizzare i metodi Compare, CompareOrdinal, CompareTo, Equals, EndsWith e StartsWith per i confronti.

  • Utilizzare i metodi IndexOf, IndexOfAny, LastIndexOf e LastIndexOfAny per ottenere l'indice di una sottostringa o di un carattere Unicode in una stringa.

  • Utilizzare i metodi Copy e CopyTo per copiare una stringa o una sottostringa in un'altra stringa o in una matrice di tipo Char.

  • Utilizzare i metodi Substring e Split per creare una o più stringhe nuove da parti di una stringa originale; utilizzare i metodi Concat e Join per creare una nuova stringa da una o più sottostringhe.

  • Utilizzare i metodi Insert, Replace, Remove, PadLeft, PadRight, Trim, TrimEnd e TrimStart per modificare una stringa in tutto o in parte.

  • Utilizzare i metodi ToLower, ToLowerInvariant, ToUpper e ToUpperInvariant per trasformare i caratteri Unicode di una stringa da maiuscoli a minuscoli o viceversa.

  • Utilizzare il metodo Format per sostituire uno o più segnaposto di elementi di formato in una stringa con la rappresentazione testo di uno o più valori numerici, di data e ora o di enumerazione.

  • Utilizzare la proprietà Length per ottenere il numero di oggetti Char in una stringa e la proprietà Chars per accedere agli oggetti Char effettivi presenti in una stringa.

  • Utilizzare il metodo IsNormalized per testare se una stringa è normalizzata in un determinato formato di normalizzazione. Utilizzare il metodo Normalize per creare una stringa normalizzata in un determinato formato di normalizzazione.

Interfacce implementate

La classe String implementa le interfacce IComparable, ICloneable, IConvertible, IEnumerable e IComparable. Utilizzare la classe Convert per le conversioni anziché l'implementazione del membro esplicito dell'interfaccia IConvertible.

Si tratta di un tipo adatto alle operazioni multithreading.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2016 Microsoft