Come concatenare più stringhe (Guida per C#)
la concatenazione è il processo di accodamento di una stringa alla fine di un'altra stringa. Le stringhe vengono concatenate usando l'operatore +
. Per i valori letterali stringa e le costanti stringa, la concatenazione avviene in fase di compilazione; non si verifica alcuna concatenazione in fase di esecuzione. Per le variabili stringa, la concatenazione viene eseguita solo in fase di esecuzione.
Nota
Gli esempi C# in questo articolo vengono eseguiti nello strumento di esecuzione del codice inline Try.NET e nel playground. Selezionare il pulsante Esegui per eseguire un esempio in una finestra interattiva. Dopo aver eseguito il codice, è possibile modificarlo ed eseguire il codice modificato selezionando di nuovo Esegui. Il codice modificato viene eseguito nella finestra interattiva o, se la compilazione non riesce, nella finestra interattiva vengono visualizzati tutti i messaggi di errore del compilatore C#.
Suggerimento (if "Tip" means advice)
Puoi utilizzare l’assistenza dell’intelligenza artificiale per concatenare stringhe con GitHub Copilot.
Valori letterali stringa
Nell'esempio seguente viene suddiviso un valore letterale stringa lungo in stringhe più piccole per migliorare la leggibilità nel codice sorgente. Il codice concatena le stringhe più piccole per creare la stringa letterale lunga. Le parti vengono concatenate in una singola stringa in fase di compilazione. Non sono previsti costi di prestazioni in fase di esecuzione indipendentemente dal numero di stringhe coinvolte.
// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";
System.Console.WriteLine(text);
operatori +
e +=
Per concatenare variabili stringa, è possibile usare gli operatori di +
o di +=
, l'interpolazione di stringhe o i metodi String.Format, String.Concat, String.Join o StringBuilder.Append. L'operatore +
è facile da usare e rende intuitivo il codice. Anche se si usano più operatori +
in un'unica istruzione, il contenuto della stringa viene copiato una sola volta. Il codice seguente mostra esempi di utilizzo degli operatori +
e +=
per concatenare stringhe:
string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();
// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);
str += " How are you today?";
System.Console.WriteLine(str);
Interpolazione di stringhe
In alcune espressioni è più semplice concatenare stringhe usando l'interpolazione di stringhe, come illustrato nel codice seguente:
string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();
// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);
str = $"{str} How are you today?";
System.Console.WriteLine(str);
Nota
Nelle operazioni di concatenazione di stringhe, il compilatore C# considera una stringa Null uguale a una stringa vuota.
È possibile usare l'interpolazione di stringhe per inizializzare una stringa costante quando anche tutte le espressioni utilizzate per i segnaposto sono stringhe costanti.
String.Format
Un altro metodo per concatenare stringhe è String.Format. Questo metodo funziona bene quando si compila una stringa da un numero ridotto di stringhe di componenti.
StringBuilder
In altri casi, è possibile combinare stringhe in un ciclo in cui non si conosce il numero di stringhe di origine che si sta combinando e il numero effettivo di stringhe di origine può essere elevato. La classe StringBuilder è stata progettata per questi scenari. Il codice seguente usa il metodo Append della classe StringBuilder per concatenare stringhe.
// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());
Puoi leggere ulteriori informazioni sui motivi per scegliere la concatenazione di stringhe o la classe StringBuilder
.
String.Concat
o String.Join
Un'altra opzione per unire stringhe da una raccolta consiste nell'usare String.Concat metodo. Utilizzare String.Join metodo se un delimitatore deve separare le stringhe di origine. Il codice seguente combina una matrice di parole usando entrambi i metodi:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);
var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);
LINQ e Enumerable.Aggregate
Infine, è possibile usare LINQ e il metodo Enumerable.Aggregate per unire stringhe da una raccolta. Questo metodo combina le stringhe di origine usando un'espressione lambda. L'espressione lambda esegue il lavoro per aggiungere ogni stringa all'accumulo esistente. Nell'esempio seguente viene combinata una matrice di parole, aggiungendo uno spazio tra ogni parola nella matrice:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);
Questa opzione può causare più allocazioni rispetto ad altri metodi per la concatenazione delle raccolte, in quanto crea una stringa intermedia per ogni iterazione. Se l'ottimizzazione delle prestazioni è fondamentale, prendere in considerazione la classe StringBuilder
o il metodo String.Concat
o String.Join
per concatenare una raccolta, anziché Enumerable.Aggregate
.
Usare GitHub Copilot per concatenare stringhe
È possibile usare GitHub Copilot nell'IDE per generare codice C# per concatenare più stringhe. È possibile personalizzare il prompt per specificare stringhe e il metodo da usare in base alle esigenze.
Il testo seguente mostra un esempio di richiesta di chat di Copilot:
Generate C# code to use String.Format to build an output string "Hi x, today's date is y. You are z years old." where x is "John", y is today's date and z is the birthdate January 1, 2000. The final string should show date in the full format mm/dd/yyyy. Show output.
GitHub Copilot è basato sull'intelligenza artificiale, quindi sono possibili sorprese ed errori. Per altre informazioni, vedere FAQ di Copilot.
Altre informazioni su GitHub Copilot in Visual Studio e GitHub Copilot in VS Code.