共用方式為


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

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

注意

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

String.Split 範例

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

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

foreach (var word in words)
{
    System.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++)
{
    System.Console.WriteLine($"Index {i}: <{words[i]}>");
}

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

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

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

此行為可以更輕鬆地使用格式,例如代表表格式資料的逗號分隔值 (CSV) 檔案。 連續的逗號表示空白資料行。

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

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

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

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

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

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

任何分隔符號的連續執行個體都會產生輸出陣列中的空字串:

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

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

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

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

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

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

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

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

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

使用 GitHub Copilot 分割字串

您可以在 IDE 中使用 GitHub Copilot 來產生程式代碼,以使用 String.Split C# 來分割字串。

如果您使用 Visual Studio 2022 17.8 版或更新版本,您可以嘗試在 Visual Studio 中使用 AI 驅動的 GitHub Copilot 來產生程式代碼,以根據一或多個分隔符將輸入字串分割成子字串串。 在 Copilot 聊天視窗中將您的問題當成提示提交,如以下範例。 您也可以在編輯器視窗本身使用內嵌聊天來提交提示。

注意

GitHub Copilot 是由 AI 驅動的,因此可能會有意外和錯誤的情況發生。 任何生成的代碼或建議都務必要驗證。 有關 GitHub Copilot 的一般使用、產品影響、人為監督和隱私權的更多資訊,請參閱 [GitHub Copilot 常見問題解答]

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

產生 C# 程式代碼,以使用 Split.String 將字串分割成子字串。 輸入字串為「您贏得一些。 你失去了一些。分隔符是空格和句點。 提供範例輸出。

您可以根據需求自訂提示,以使用字串和分隔符。

您可以使用聊天功能,例如 slash 命令、參考檔案、方法或類別,和執行緒,來設定意圖並取得範圍內容更好的解答。 針對在 IDE 中開啟的現有檔案,您可以使用內嵌聊天與 /generate code to split string1 in #Filename by delimiter spaces來提示 GitHub Copilot。

下列輸出顯示 Copilot Chat 回應的範例:

Here is an example of how you can use the Split method in C# to split the string "You win some. You lose some." using space and period as delimiters:

using System;

class Program
{
    static void Main()
    {
        string input = "You win some. You lose some.";
        char[] delimiters = new char[] { ' ', '.' };
        string[] substrings = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

        foreach (string substring in substrings)
        {
            Console.WriteLine(substring);
        }
    }
}

**Example Output**
You
win
some
You
lose
some

當 Copilot 傳回程式碼區塊時,回應會包含複製程式碼、將程式碼插入新檔案或預覽程式碼輸出的選項。

注意

您的結果可能會與範例回應中顯示的內容不同。 AI 模型不具決定性,這代表在詢問相同問題時,它們可能會傳回不同的回答。 這可能是由於隨著時間而進行的額外學習和調整、語言變化、上下文變化 (例如您的聊天記錄) 等因素造成的。

顯示使用 Visual Studio 中的 GitHub Copilot Chat 將字串分割成子字串的螢幕快照。

如需詳細資訊,請參閱

另請參閱