如何使用 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 模型不具決定性,這代表在詢問相同問題時,它們可能會傳回不同的回答。 這可能是由於隨著時間而進行的額外學習和調整、語言變化、上下文變化 (例如您的聊天記錄) 等因素造成的。
如需詳細資訊,請參閱
- GitHub Copilot 信任中心
- Visual Studio 中的 GitHub Copilot
- VS Code 中的 GitHub Copilot