共用方式為


如何使用 C# 中的 String.Split 來分隔字串

String.Split 方法會根據一或多個分隔符號來分割輸入字串,以建立子字串陣列。 此方法通常是分隔字組界限上字串的最簡單方式。

注意

本文中的 C# 範例會在 Try.NET 內嵌程式碼執行器和測試區執行。 選取 [執行] 按鈕以在互動式視窗中執行範例。 執行程式碼之後,您便可以修改它,並再選取一次 [執行] 來執行修改過的程式碼。 修改過的程式碼會在互動式視窗中執行,或是如果編譯失敗的話,互動式視窗會顯示所有 C# 編譯器錯誤訊息。

提示

您可以使用 AI 協助 來分割字串

將字串分割成單字

下列程式碼將常用詞語分割成每個字組的字串陣列。

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

每個分隔符號字元都會在傳回的陣列中產生一個值。 由於 C# 中的陣列會從零開始編號,陣列中的每個字串都會從 0 編製索引到 Array.Length 屬性傳回的值減 1:

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

for (int i = 0; i < words.Length; i++)
{
    Console.WriteLine($"Index {i}: <{words[i]}>");
}

String.Split有許多多載。 這些多載會自定義字串分割的行為:

  • 您可以將分隔符指定為 char 值或 string 值。
  • 您可以指定一個分隔符或多個分隔符。 如果您指定多個分隔符,它們都必須是相同的類型(或 charstring)。
  • 您可以指定要傳回的子字串數目上限。
  • 您可以指定是否忽略重複的分隔字元,或在傳回值中產生空的子字串。
  • 您可以指定是否從傳回的子字串中移除前置和尾端空格元。

其餘範例會使用不同的重載來展示每種這些行為。

指定多個分隔符

String.Split 可以使用多個分隔符號字元。 下列範例會使用空格、逗號、句號、冒號和定位點作為區隔字元,而這些會以陣列形式傳遞至 Split。 程式碼底部的迴圈會顯示所傳回陣列中的每個字組。

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo three:four,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

對於任何分隔符號,連續重複出現會在輸出陣列中產生空字串。

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo :,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

String.Split 可以採用字串陣列 (作為分隔符號以剖析目標字串的字元序列,而不是單一字元)。

string[] separatingStrings = ["<<", "..."];

string text = "one<<two......three<four";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    Console.WriteLine(word);
}

限制輸出大小

下列範例示範如何將輸出限制為來源字串中的前四個子字串。

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ', 4, StringSplitOptions.None);

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

拿掉空的子字串

連續分隔符號字元會產生空字串,作為已傳回陣列中的值。 您可以在下列範例中看到如何建立空字串,而這會使用空白字元作為分隔符號。

string phrase = "The quick brown    fox     jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

這種行為使得格式如用於表示表格資料的逗號分隔值(CSV)檔案更加簡單易用。 連續的逗號表示空白資料行。

您可以傳遞選擇性 StringSplitOptions.RemoveEmptyEntries 參數,以排除已傳回陣列中的任何空字串。 針對更複雜處理的已傳回集合,您可以使用 LINQ 來操作結果序列。

修剪空格符

下列範例顯示修剪項目的效果:

string numerals = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
string[] words = numerals.Split(',', StringSplitOptions.TrimEntries);

Console.WriteLine("Trimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}
words = numerals.Split(',', StringSplitOptions.None);
Console.WriteLine("Untrimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

未修整的項目在數字前有額外的空格。

使用 AI 分割字串

您可以使用 GitHub Copilot 等 AI 工具來產生程式代碼,以使用 String.Split C# 來分割字串。 您可以根據需求自訂提示,以使用字串和分隔符。

下列文字顯示 Copilot Chat 的範例提示:

Generate C# code to use Split.String to split a string into substrings.
Input string is "You win some. You lose some." Delimiters are space and period.
Provide example output.

GitHub Copilot 是由 AI 驅動的,因此可能會有意外和錯誤的情況發生。 如需詳細資訊,請參閱 Copilot 常見問題

另請參閱