如何串連多個字串串 (C# 指南)
串連 是將一個字串附加至另一個字串結尾的過程。 您可以使用 +
運算符串連字串。 針對字串常值和字串常數,串連會在編譯時期發生;不會發生運行時串連。 對於字串變數,串連只會在運行時間發生。
注意
本文中的 C# 範例會在 Try.NET 內嵌程式代碼執行器和遊樂場中執行。 選取 [執行] 按鈕,以在互動式視窗中執行範例。 修改程式碼後,您可以再次選擇 [執行] 以執行已修改的程式碼。 修改過的程式代碼會在互動式視窗中執行,或者,如果編譯失敗,互動式視窗會顯示所有 C# 編譯程式錯誤訊息。
字串常值
下列範例會將長的字串分割成較小的文字,以改善原始程式碼中的可讀性。 程式碼會串連較小的字串,以建立長字串字面值。 元件會在編譯時期串連成單一字串。 涉及的字串數目無論多少,都不會產生執行效能的任何成本。
// 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);
+
和 +=
運算符
若要串連字串變數,您可以使用 +
或 +=
運算符、字串插補 或 String.Format、String.Concat、String.Join 或 StringBuilder.Append 方法。
+
運算子很容易使用,並能產生直覺式的代碼。 即使您在一個語句中使用數個 +
運算符,字串內容只會複製一次。 下列程式代碼示範如何使用 +
和 +=
運算符串連字串的範例:
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);
字串插補
在某些表達式中,使用字串插補比較容易串連字串串,如下列程式代碼所示:
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);
注意
在字串串連作業中,C# 編譯程式會將 Null 字串視為與空字串串相同。
當用於佔位符的所有運算式也是常數字串時,您可以使用字串插值來初始化常數字串。
String.Format
串連字串的另一個方法是 String.Format。 當您從少量元件字串建置字串時,這個方法很適用。
StringBuilder
在其他情況下,您可能會在迴圈中結合字串,而您不知道要結合的來源字串數目,而且來源字串的實際數目可能很大。 StringBuilder 類別是針對這些案例所設計。 下列程式代碼會使用 StringBuilder 類別的 Append 方法來串連字串。
// 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());
您可以深入瞭解選擇字串串連或
String.Concat
或 String.Join
從集合聯結字串的另一個選項是使用 String.Concat 方法。 如果分隔符應該分隔來源字串,請使用 String.Join 方法。 下列程式碼會使用這兩種方法來組合單字陣列。
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 和 Enumerable.Aggregate
最後,您可以使用 LINQ 和 Enumerable.Aggregate 方法來聯結集合中的字串。 這個方法會使用 Lambda 運算式結合來源字串。 Lambda 運算式會執行工作,將每個字串新增至現有的累積。 下列範例會結合單字的陣列,並在陣列中的每個單字之間加上空格:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);
這個選項可能會導致比其他用於串接集合的方法更多的配置,因為它為每次迭代創建一個中間字串。 如果優化效能很重要,請考慮 StringBuilder
類別或 String.Concat
或 String.Join
方法來串連集合,而不是 Enumerable.Aggregate
。