如何在 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 Chat 窗口中以提示形式提交问题,如下例所示。 还可以在编辑器窗口中使用内联聊天提交提示。
注意
GitHub Copilot 由 AI 提供支持,因此可能会带来意外和错误。 请确保验证任何生成的代码或建议。 有关 GitHub Copilot 的常规用途、产品影响、人工监督和隐私的更多信息,请参阅 GitHub Copilot 常见问题解答。
以下文本显示了 Copilot 聊天的示例提示:
生成 C# 代码以使用 Split.String 将字符串拆分为子字符串。 输入字符串是“你赢得一些。 你失去了一些。分隔符是空格和句点。 提供示例输出。
可以根据要求自定义提示以使用字符串和分隔符。
可以使用聊天功能(如斜杠命令、引用文件、方法或类和线程)来设置意向,并通过已限定范围上下文获取更好的答案。 对于在 IDE 中打开的现有文件,可以使用内联聊天 /generate code to split string1 in #Filename by delimiter spaces
提示 GitHub Copilot。
以下输出显示了 Copilot 聊天响应示例:
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