c#中Split分割字符串的几种方法
作者:vegas 发布日期:2008.03.21 1,461 views
所属分类:C#
最近经常看到论坛中许多帖子询问如何使用split来分割字符串,我这里对split做一些简单的总结,希望能够对大家有所帮助。下面介绍几种方法:
第一种方法:打开vs.net新建一个控制台项目。然后在Main()方法下输入下面的程序。
string s="abcdeabcdeabcde";string[] sArray=s.Split('c');foreach(string i in sArray)Console.WriteLine(i.ToString());
输出下面的结果:ab
deab
deab
de
我们看到了结果是以一个指定的字符进行的分割。如果我们希望使用多个字符进行分割如c,d,e如何做呢?好,我们使用另一种构造方法:
string s="abcdeabcdeabcde string[] sArray1=s.Split(new char[3]{'c','d','e'}); foreach(string i in sArray1) Console.WriteLine(i.ToString());
可以输出下面的结果:ab
ab
ab
除了以上的这两种方法以外,第三种方法是使用正则表达式。新建一个控制台项目。然后先添加 using System.Text.RegularExpressions;
Main() :中更改为
System.Text.RegularExpressionsstring content="agcsmallmacsmallgggsmallytx";string[]resultString=Regex.Split(content,"small",RegexOptions.IgnoreCase)foreach(string i in resultString)Console.WriteLine(i.ToString());
输出下面的结果:agc
mac
ggg
ytx
使用正则表达式有什么好处呢? 别着急,后面我们会看到它的独特之处。
下面介绍第4种方法。比如
string str1="我*****是*****一*****个*****教*****师";
如果我希望显示为:我是一个教师, ,如何作呢? 我们可以使用下面代码:
string str1="我*****是*****一*****个*****教*****师; string[] str2; str1 =str1.Replace("*****","*"); str2 =str1.Split('*'); foreach(string i in str2) Console.WriteLine(i.ToString());
这样也可以得到正确结果。但是比如
string str1="我**是*****一*****个*****教*****师";
我希望显示的结果为:我是一个教师。
我如果采用上面的第四种方法来做就会产生下面的错误:我 是一个教师
中间有空格输出,所以输出结果并不是我希望的结果,如何解决呢?这就又回到了正则表达式了(这里可以看到它的功能强大之处),这时可以采用下面的第五种方法:
string str1="我**是*****一*****个*****教*****师";string[] str2 =System.Text.RegularExpressions.Regex.Split(str1,@"[*]+");foreach(string i in str2)Console.WriteLine(i.ToString());
这里通过"[*]+" 巧妙的完成了我们的目标。
//c#中Split用法总结
首先想想说说的是,对于同行来说,这些小知识点,或许是已经很熟悉了,大有没发博文之必要;但是个人觉得:知识这个东西,需要不断的总结,温 故而知新比较好.最近一段时间,本人想系统总结一些东西,即将陆陆续续的呈现出来,对大家有帮助的可以看看,没帮助的也无所谓.相信在今后一系列的总结当 中,会找到你感兴趣的东西.
string[] sArray=s.Split(c) ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());
输出下面的结果:
ab
deab
deab
de
string[] sArray=s.Split(new char(3){c,d,e}) ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());
ab
ab
需要在这里提示说明一下的是:构造函数new char(3){c,d,e}中,如果是要以空格或非字符的形式分割,需要用单引号括起来,如new char(){''};
string[]resultString=System.Text.RegularExpressions .Regex.Split(content,small,RegexOptions.IgnoreCase)
foreach(string i in resultString)
Console.WriteLine(i.ToString());
输出下面的结果:
agc
mac
ggg
ytx
总结:其中对于1,2两种方法较为常用,第3种方法也能实现相应的效果.如果正则表达式这一块的知识比较熟的话,不妨也可以用第3种方法.
//===
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc
2、用多个字符来分隔:
string str="aaajbbbscccjdddseee";
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc
ddd
eee
3、用单个字符来分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc
这是一个具有语法错误的语句,Split 的 separator 参数应该是 char[] 或 string[],不应是字符串。正确的示例:
char[] separator = { 'o' };
string[] arr = str.Split(separator);
String.Split 方法有6个重载函数:
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)
下边我们通过一些实例来说明下怎么使用(以下string words = "1,2.3,,4";):
1. public string[] Split(params char[] separator)
string[] split = words.Split(new Char[] { ',', '.' });//返回:{"1","2","3","","4"}
2. public string[] Split(char[] separator, int count)
string[] split = words.Split(new Char[] { ',', '.' }, 6);//返回:{"1","2","3","","4"}
3. public string[] Split(char[] separator, StringSplitOptions options)
string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)
string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)
string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)
string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素