共用方式為


如何串連多個字串串 (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.FormatString.ConcatString.JoinStringBuilder.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.ConcatString.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

最後,您可以使用 LINQEnumerable.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.ConcatString.Join 方法來串連集合,而不是 Enumerable.Aggregate

另請參閱