语法
Split(expression[, delimiter[, count[, start]]])
Split 函数的语法有以下参数:
expression 必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
delimiter 可选。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
count 可选。被返回的子字符串数目,-1 指示返回所有子字符串。
compare 可选。指示在计算子字符串时使用的比较类型的数值。compare 参数可以有以下值:
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文本比较。
String.Split 方法有6个重载函数:
1) public string[] Split(params char[] separator)
2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options)
下面看实例
一、引入命名空间
using System.Text.RegularExpressions;
1、用字符串分隔:
代码如下 | 复制代码 |
string str="aaajsbbbjsccc"; string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase); foreach (string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果: |
2、用多个字符来分隔:
代码如下 | 复制代码 |
string str="aaajbbbscccjdddseee"; string[] sArray=str.Split(new char[2]{'j','s'}); foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果: |
3、用单个字符来分隔:
代码如下 | 复制代码 |
string str="aaajbbbjccc"; string[] sArray=str.Split('j'); foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果: |
例一:用单符号分隔字符串,用split函数拆分。
实例字符串:aaaa|ccccc|dddd|eeeee|ffff
代码如下:
代码如下 | 复制代码 |
string str = "aaaa|ccccc|dddd|eeeee|ffff"; string[] array = str.Split('|'); foreach (string i in array) Response.Write(i+"<br />"); 输出结果: aaaa |
Split函数里面我们传入的是一个char型,所以必须要用单引号而不能写成:str.Split("|") 应用的重载如下:
例二:用多字符分隔字符串,用split分组拆分。
实例字符串:aaaa|ccccc,dddd,eeeee|ffff
代码如下:
代码如下 | 复制代码 |
string str = "aaaa|ccccc,dddd,eeeee|ffff"; string[] array = str.Split(new char[2] { '|', ','}); foreach (string i in array) Response.Write(i+"<br />"); 输出结果: aaaa |
因为在Split里面需要的参数是一个char型数组,所以我们可以一次性传入多个char字符,如果我们的字符串用不同的符号分隔的,那么我们就可以用这个方法来完成字符串的切分。
例三:字符串分隔用正则的匹配split拆分。
实例字符串:www.laozamao.comtiandaowww.baidu.comtiandaowww.lvyougang.com
大家看到这个字符串很诡异,不过在现实情况中我们还真有可能遇到这样的,那就是用字符串分隔的,非单个字符。例如本例中我们用tiandao这样的字符串来分隔,那么这时候用字符串的split函数我们就很难做到了,不过没关系,我们可以用正则中的split来完成这个功能。代码如下:
首先引用名字空间:using System.Text.RegularExpressions;
代码如下 | 复制代码 |
string str = "www.111cn.nettiandaowww.baidu.comtiandaowww.111cn.net"; string[] sArray = Regex.Split(str, "tiandao", RegexOptions.IgnoreCase); foreach (string i in sArray) Response.Write(i.ToString() + "<br />"); 输出结果: www.111cn.net |
扩展方法讲解
在上面的三个例子中我样已经基本把字符串分隔中遇到的情况差不多都讲解了,但是其中遗漏了这样一种情况:空元素
也就是说在分隔之后我们有可能得到一组空数据,通常我们的做法是在得到结果的时候判断是否为空,然后再做处理,其实在split函数里已经提供了空元素的解决方法,那就是split的第二个参数:StringSplitOptions,这是一个枚举类型,我们来看一下他的值:
第一个:None是返回值包括含有空字符串的数组元素
第二个:RemoveEmptyEntries是返回值不包括含有空字符串的数组元素
现在我们再返回来看字符串的Split函数,发现他有六次重载,这六次重载中第一个参数有两种变化,char型和string型数组,第二个参数是返回个数,如我分隔之后有五个,那么我只需要前三个,就可以在第二个参数传值限制返回个数,这个就不再详细的讲解了,重点第三个枚举的两种状态我们做一个小测试:
例四:在split函数中包含空元素。
实例字符串:aaaa,,aaa,aaa,aaa,,,,aaa
代码如下:
代码如下 | 复制代码 |
string str = "aaaa,,aaa,aaa,aaa,,,,aaa"; string[] array = str.Split(new char[1]{','}, StringSplitOptions.None); foreach (string i in array) Response.Write(i + "<br />"); 我们第二个参数传的是包含空元素,那么得到的结果是: aaaa aaa
|
aaa
如果我们把代码改一下:
代码如下 | 复制代码 |
string str = "aaaa,,aaa,aaa,aaa,,,,aaa"; string[] array = str.Split(new char[1]{','}, StringSplitOptions.RemoveEmptyEntries); foreach (string i in array) Response.Write(i + "<br />"); 输出结果: aaaa |
这样我们就不需要去另外加判断是否为空字符串了,所以说这是一个很实用的功能。