C#中使用Split函数分割截取字符串
String.Split方法提供了如下6个重载函数:
返回结果:一个数组,其元素包含此字符串中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。
参数:
separator:分隔此字符串中子字符串的字符数组、不包含分隔符的空数组或 null。
count: 要返回的子字符串的最大数量。
注意:count不能为负数,否则会抛出异常:T:System.ArgumentOutOfRangeException:
options:要省略返回的数组中的空数组元素,则为System.StringSplitOptions.RemoveEmptyEntries;要包含返回的数组中的空数组元素,则为System.StringSplitOptions.None。0:返回的值包括数组的元素,包含一个空字符串。1:返回值不包括包含空字符串的数组元素。
注意:options的值必须为0或者1,否则会抛出异常: T:System.ArgumentException: options 不是 System.StringSplitOptions 值之一。
函数 | 摘要 |
---|---|
public String[] Split(params char[] separator); | 摘要:基于数组中的字符将字符串拆分为多个子字符串。参数:separator。 |
public String[] Split(char[] separator, int count); | 摘要:基于数组中的字符将一个字符串拆分成最大数量的子字符串。 也可指定要返回的子字符串的最大数量。参数:separator,count。 |
public String[] Split(char[] separator, StringSplitOptions options); | 摘要:基于数组中的字符将字符串拆分为多个子字符串。 可以指定子字符串是否包含空数组元素。参数:separator,options。 |
public String[] Split(char[] separator, int count, StringSplitOptions options); | 摘要:基于数组中的字符将一个字符串拆分成最大数量的子字符串。参数:separator,count,options。 |
public String[] Split(String[] separator, StringSplitOptions options); | 摘要:基于数组中的字符串将字符串拆分为多个子字符串。 可以指定子字符串是否包含空数组元素。参数:separator,options。 |
public String[] Split(String[] separator, int count, StringSplitOptions options); | 摘要:基于数组中的字符串将一个字符串拆分成最大数量的子字符串。 可以指定子字符串是否包含空数组元素。参数:separator,count,options |
下面就是简单地演示。
string str = "aambbmccsdd";//先定义一个字符串中间用m和s隔开
string[] A = str.Split('m');//通过m分割 返回的是数组类型的所以定义一个数组接收
for (int i = 0; i < A.Length; i++) Console.WriteLine(A[i]);//使用for循环输出
Console.ReadLine();
可以看到结果是
也可以通过new char[]{ ‘m’}的方式传参。
分割的参数有几个char[]的中括号里就填几。
例如:
string[] A = str.Split(new char[2]{ ‘m’,‘s’ });//通过m和s分割。
string str = "aambbmccsdd";//先定义一个字符串中间用m和s隔开
string[] A = str.Split(new char[]{ 'm'});//通过m分割 返回的是数组类型的所以定义一个数组接收
for (int i = 0; i < A.Length; i++) Console.WriteLine(A[i]);//使用for循环输出
Console.ReadLine();
为了方便直接把所有演示代码一块发出来,感兴趣的可以复制自己试试。
string str = "aambbmccsdd";//先定义一个字符串中间用m和s隔开
//String.Split(Char[])
//通过m分割(结果 :"aa" "bb" "ccsdd")。
string[] strArray = str.Split(new char[]{ 'm'});//通过m分割 返回的是数组类型的所以定义一个数组接收
for (int i = 0; i < strArray.Length; i++) Console.WriteLine(strArray[i]);//使用for循环输出
Console.WriteLine("************");
//通过m和s进行分割 (结果 :"aa" "bb" "cc" "dd")。
string[] strArray1 = str.Split('m', 's');//通过m和s进行分割
foreach (string i in strArray1) Console.WriteLine(i);
Console.WriteLine("************");
//String.Split(Char[],Int32)
//只切割成两份(结果 :"aa" "bbmccsdd")。
string[] strArray2 = str.Split(new char[] { 'm' },2);
foreach (string i in strArray2) Console.WriteLine(i);
Console.WriteLine("************");
//定义一个切割后包含空字符的字符串
string str1 = "aambbmmccsdd";
//String.Split(String[], StringSplitOptions)
//去除空元素 不带这个参数的其他重载默认也会保留空元素(结果 :"aa" "bb" "ccsdd")。
string[] strArray3 = str1.Split(new char[] { 'm' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string i in strArray3) Console.WriteLine(i);
Console.WriteLine("************");
//保留空元素(结果 :"aa" "bb" "" "ccsdd")。
string[] strArray4 = str1.Split(new char[] { 'm' }, StringSplitOptions.None);
foreach (string i in strArray4) Console.WriteLine(i);
Console.WriteLine("************");
//修改字符串切割成2份且是否去除空元素
str1 = "mmaambbmmccsdd";
//String.Split(Char[], Int32, StringSplitOptions);
//切割成2份且去除空元素(结果 :"aa" "bbmmccsdd")
string[] strArray5 = str1.Split(new char[] { 'm'},2, StringSplitOptions.RemoveEmptyEntries);
foreach (string i in strArray5) Console.WriteLine(i);
Console.WriteLine("************");
//切割成2份且保留空元素(结果 :"" "maambbmmccsdd")
string[] strArray6 = str1.Split(new char[] { 'm' }, 2, StringSplitOptions.None);
foreach (string i in strArray6) Console.WriteLine(i);
Console.WriteLine("************");
//修改为带符号的字符串
str1 = "a,b*c,,d";
//public string[] Split(string[] separator, StringSplitOptions options);
//不保留空元素(结果 :"a" "b" "c" "d")。
string[] strArray7 = str1.Split(new string[] { ",", "*" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string i in strArray7) Console.WriteLine(i);
Console.WriteLine("************");
//保留空元素 (结果 :"a" "b" "c" "" "d")。
string[] strArray8 = str1.Split(new string[] { ",", "*" }, StringSplitOptions.None);
foreach (string i in strArray8) Console.WriteLine(i);
Console.WriteLine("************");
//不保留空元素(结果 :"a" "b*c,,d")。
string[] strArray9 = str1.Split(new string[] { ",", "*" }, 2, StringSplitOptions.RemoveEmptyEntries);
foreach (string i in strArray9) Console.WriteLine(i);
Console.WriteLine("************");
//保留空元素(结果 :"a" "b" "c" "" "d")。
string[] strArray10 = str1.Split(new string[] { ",", "*" }, 5, StringSplitOptions.None);
foreach (string i in strArray10) Console.WriteLine(i);
Console.ReadLine();