String.Split
方法用于将字符串按照指定的分隔符拆分成子字符串数组。最常见的是接受一个分隔符数组和一个 StringSplitOptions
枚举值作为参数。
以下是 String.Split
方法的一些常见用法:
使用单个字符作为分隔符
string str = "apple,banana,orange";
string[] parts = str.Split(',');
// parts 将是 { "apple", "banana", "orange" }
使用多个字符作为分隔符
string str = "apple;banana,orange";
char[] separators = new char[] { ';', ',' };
string[] parts = str.Split(separators);
// parts 将是 { "apple", "banana", "orange" }
使用 StringSplitOptions.RemoveEmptyEntries
移除空条目
string str = "apple,,banana,orange,";
//移除空条目
string[] parts = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
// parts 将是 { "apple", "banana", "orange" }
//不移除空条目
string[] parts2 = str.Split(new char[] { ',' }, StringSplitOptions.None);
// parts2 将是 { "apple", "", "banana", "orange" }
使用字符串作为分隔符
虽然 String.Split
方法通常接受字符或字符数组作为分隔符,但你也可以通过调用 StringSplitExtensions.Split
扩展方法(需要包含 System.Linq
命名空间)来使用字符串数组作为分隔符:
string str = "apple-fruit banana-vegetable orange-fruit";
string[] separators = new string[] { "-fruit", "-vegetable" };
string[] parts = str.Split(separators, StringSplitOptions.RemoveEmptyEntries);
// 注意:这不是 String.Split 的标准行为,而是 StringSplitExtensions.Split
// parts 将是 { "apple", "banana", "orange" }(如果使用了正确的扩展方法)
注意:标准的 String.Split
方法不接受字符串数组作为分隔符。上面的 StringSplitExtensions.Split
是一个假设的扩展方法,用于说明可以使用字符串数组作为分隔符的概念。在C#的标准库中,没有直接接受字符串数组作为分隔符的 Split
方法。如果你需要按字符串分隔符拆分字符串,你可能需要编写自定义的逻辑或使用正则表达式。
使用正则表达式进行复杂的分割
如果你需要进行更复杂的分割操作(例如,基于正则表达式的模式匹配),你可以使用 Regex.Split
方法:
using System.Text.RegularExpressions;
string str = "apple123banana456orange";
string[] parts = Regex.Split(str, @"\d+"); // 使用正则表达式匹配一个或多个数字
// parts 将是 { "apple", "banana", "orange" }
使用 StringSplitOptions
枚举和默认参数(从 C# 8.0 开始)
你可以为方法的参数提供默认值。因此,如果你不提供 StringSplitOptions
参数,它将默认为 StringSplitOptions.None
string str = "apple,,banana,orange,";
char[] separators = new char[] { ',' };
string[] parts = str.Split(separators); // 默认为 StringSplitOptions.None
// parts 将是 { "apple", "", "banana", "orange", "" }
使用 MaxSplitCount
参数限制分割次数
在某些重载中,你还可以指定一个 int maxSplitCount
参数来限制分割的次数。这在你只想分割字符串的前几个部分时很有用。
string str = "apple,banana,orange,grape";
char[] separators = new char[] { ',' };
string[] parts = str.Split(separators, 2); // 最多分割两次
// parts 将是 { "apple", "banana,orange,grape" }
注意:不是所有的 String.Split
重载都接受 maxSplitCount
参数。只有接受 char[]
或 string[]
分隔符和 StringSplitOptions
的重载才接受它。