老杂毛博客
  青青子衿,悠悠我心。但为君故,沉吟至今。
博客首页 | 人生历程 | 编程开发 | 机关门  
  文章分类
 
博客首页 > 软件网络编程 > 文章正文

asp.net中split的用法,C#符号分隔split的用法

2011/4/1 11:22:59
 

     假如我们有这样一组字符串:aaa|bbb|ccc  也许这个字符串里面存了一组特定的数据你需要用竖线把他们一一分隔开,然后分别读取,那么我们如何来完成这个功能呢,假如我们的字符串只有两部分组成,aaa|bbb,也许你会想到用indexof配合Substring和截取,没错,我现在有的时候回头看看我很多年前写的程序也有很多代码是这么写的,其实我们完全没有必要进行那样复杂的计算,因为在C#,java,js等等这些稍微高级点的程序语言中基本都提供了split这个函数,今天通过查一些文档以及做一些小实验一起来和大家分享一下split这个函数的用法。

例一:用单符号分隔字符串,用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+"#lt;br /#gt;");

输出结果:

aaaa
ccccc
dddd
eeeee
ffff

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+"#lt;br /#gt;");

输出结果:

aaaa
ccccc
dddd
eeeee
ffff

因为在Split里面需要的参数是一个char型数组,所以我们可以一次性传入多个char字符,如果我们的字符串用不同的符号分隔的,那么我们就可以用这个方法来完成字符串的切分。

例三:字符串分隔用正则的匹配split拆分。

实例字符串:www.laozamao.comtiandaowww.baidu.comtiandaowww.lvyougang.com

大家看到这个字符串很诡异,不过在现实情况中我们还真有可能遇到这样的,那就是用字符串分隔的,非单个字符。例如本例中我们用tiandao这样的字符串来分隔,那么这时候用字符串的split函数我们就很难做到了,不过没关系,我们可以用正则中的split来完成这个功能。代码如下:

首先引用名字空间:using System.Text.RegularExpressions;

        string str = "www.laozamao.comtiandaowww.baidu.comtiandaowww.lvyougang.com";
        string[] sArray = Regex.Split(str, "tiandao", RegexOptions.IgnoreCase);
        foreach (string i in sArray) Response.Write(i.ToString() + "#lt;br /#gt;");

输出结果:

www.laozamao.com
www.baidu.com
www.lvyougang.com

扩展方法讲解

在上面的三个例子中我样已经基本把字符串分隔中遇到的情况差不多都讲解了,但是其中遗漏了这样一种情况:空元素

也就是说在分隔之后我们有可能得到一组空数据,通常我们的做法是在得到结果的时候判断是否为空,然后再做处理,其实在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 + "#lt;br /#gt;");

我们第二个参数传的是包含空元素,那么得到的结果是:

aaaa

aaa
aaa
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 + "#lt;br /#gt;");

输出结果:

aaaa
aaa
aaa
aaa
aaa

这样我们就不需要去另外加判断是否为空字符串了,所以说这是一个很实用的功能。

也许有人会说,那么既然可以用多个字符串分隔,在定义char数组的时候我这样定义不就可以了:char[3]{',',',,',,,'} 我用一个、两个、三个一起分隔,就得达到自己要的效果了,没错,这样是可以的,但是有的时候分隔符的数量不固定,可能五个,可能七个,甚至更多个,难道还都要一一写出来不成吗,所以只需要用StringSplitOptions.RemoveEmptyEntries限制一下就可以了,没必须搞的那么麻烦。

好了,通过以上的分享我相信大家对于这种分隔性的字符串处理都会有新的认识了吧,如果还有不明白的地方请给我留言。

声明:以上文章由老杂毛整理,版权没有,转载不究。

阅读: (4005)  评论(7)  
 
网友评论:
 
 1.124.126.231.1652011/4/1 13:41:22 
讲的真详细,谢谢分享。
 2.116.24.88.32011/8/26 12:59:14 
分析的很不錯,謝謝分享。
 3.123.151.32.1342011/12/13 15:54:29 
讲得 很好,像我学生!
 4.2016/6/12 12:29:19 
 5.2016/6/16 17:14:59 
 6.2016/6/21 8:42:29 
 7.2018/2/2 19:10:20 
 
相关文章:
 微信支付asp.net V3.3.7 sys
 ERRORLOG 文件太大的处理办法
 Attempted to read or w
 Ctrl键自动按下,Ctrl键和Alt总感觉
 解决 Your project contai
 adb install 多设备id号一样,如
 如何去掉优酷,土豆等网站的广告?
 webview的loadData方法加载乱码
 让iis7支持apk文件下载
 sql利用游标循环,遍历表循环结果集
 
 
     
联系作者: QQ: 657603425 Email: 657603425@qq.com
Copyright © 2007-2014 www.laozamao.com All Rights Reserved
京ICP备09002242号 北京海淀分局备案号:1101084842