String.Split()函数

String.Split()函数

我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),当中用到了String.SPlit函数,所以能够上网查了该函数的用法 例如以下:

 

#中使用string.Split方法来切割字符串的注意事项:
string.Split
给我们提供了非常灵活的使用方式, 可是假设使用不当, 会造成错误, 近期在做code review, 看到大部分人这么使用:
            string s = “A|B|:|C:D”;
            string[] ss = s.Split(“|:|”.ToCharArray());
            //ss[0]: A
            //ss[1]: B
            //ss[2]:
            //ss[3]:
            //ss[4]: C
            //ss[5]: D
事实上他的本意是使用|:|将字符串分开的, 目标是为了得到数组: A|B C:D, 可是没有直接找到Split(string)的重载, 全部就是用了ToCharArray(), 非常显然, 得到的结果是错误的.

正确的使用方法为:
            string[] ss1 = s.Split(new[] {“|:|”}, StringSplitOptions.None);
            //ss1[0]: A|B
            //ss1[1]: C:D

后一个參数, 是标志是否自己主动remove empty的数据. 比如: “A|B|:|C:D|:|” 做切割时, 会返回三个数组, 该数组的最后一个元素是空“”, 假设我们想过滤掉这些空的元素, 能够使用參数: StringSplitOptions.RemoveEmptyEntries : string[] ss1 = s.Split(new[] {“|:|”}, StringSplitOptions.RemoveEmptyEntries);

样例:

            s = “A|B|:|C:D|:|”;
            string[] ss1 = s.Split(new[] {“|:|”}, StringSplitOptions.RemoveEmptyEntries);
            //ss1[0]: “A|B”
            //ss1[1]: “C:D”

            ss1 = s.Split(new[] { “|:|” }, StringSplitOptions.None);
            //ss1[0]: “A|B”
            //ss1[1]: “C:D”
            //ss1[2]: “”

 

首先我们看下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)
下边我们通过一些实例来说明下怎么使用(下面string words = “1,2.3,,4”;):

1. public string[] Split(params char[] separator)

程序代码 程序代码
string[] split = words.Split(new Char[] { ‘,’ });//返回:{“1″,”2.3″,””,”4″}

string[] split = words.Split(new Char[] { ‘,’, ‘.’ });//返回:{“1″,”2″,”3″,””,”4″}

2. public string[] Split(char[] separator, int count)

程序代码 程序代码
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 2);//返回:{“1″,”2.3,,4”}

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.RemoveEmptyEntries);//返回:{“1″,”2″,”3″,”4”} 不保留空元素

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.RemoveEmptyEntries);//返回:{“1″,”2″,”3″,”4”} 不保留空元素

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[] { ‘,’, ‘.’ }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2.3,,4”} 不保留空元素

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[] { “,”, “.” }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2.3,,4”} 不保留空元素

string[] split = words.Split(new string[] { “,”, “.” }, 6, StringSplitOptions.None);//返回:{“1″,”2″,”3″,””,”4″} 保留空元素

个人理解:Split 就是和String.Join相反的一个函数 它的作用是把一个字符串分隔成含有多个字段的数组

我如今仅仅对上面的一种方法进行分析:
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 6);//返回:{“1″,”2″,”3″,””,”4″}
为什么返回的有了个空的“” 呢,自己当时也是不理解
事实上它就是以” , ” 和“ . ” 两个分隔符来拆分 字符串 1,2.3,,4的 当找到 3 后面的第一个”, “ 时候说明此处要分开了
可是它后面又是一个分隔符 ”, ” 怎么办呢 这是就仅仅能当成 ” ” 空来处理了  你能够变相的把  1,2.3,,4连续的两个” , “间 觉得有个空格符“ “也能够。不正确的地方请大家帮指出来 不胜感激 。


 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119255.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 关于cpp中左值和右值的细枝末节

    一、基本概念  本文主要分析右值引用中的:移动语意(movesemantics)。  要想理解右值,首先得能够判断具体什么是右值,先来看一些关于右值的判定条件:  一、任何表达式不是左值就是右值,左值和右值只的是针对表达式定义的。      这个比较容易理解,inttemp=10,func(),doublea=0.0,x++,++x,*ptr,x+y这些都是…

  • php嵌入html有哪几种方法_php修改html里面的内容

    php嵌入html有哪几种方法_php修改html里面的内容html中嵌入php代码(以.html结尾的文件)index.html<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>错误:html中嵌套php</title></head><body><?phpecho’helloworld’?></body></html

  • vim查找高亮关键字_emacs和vim

    vim查找高亮关键字_emacs和vim如果我们在在打开的文件中使用Vim搜索功能并开启搜索高亮显示后怎么取消当前高亮显示搜索关键字呢?vim搜索高亮关键字如何取消,vim清除查询高亮搜索显示的方法下面站长为大家介绍vim搜索高亮关键字怎么取消,vim查询高亮搜索显示如果清除取消第一种方法:vim搜索高亮关键字怎么取消最简单的方法是再使用Vim搜索一个在文档中不存在的搜索关键词来覆盖当前高亮显示的搜索结果。第二种方法:vim查询高亮搜索…

  • Github提交代码却没有显示绿色小格子?帮你找回绿格子!

    Github提交代码却没有显示绿色小格子?帮你找回绿格子!辛辛苦苦提交的代码却没有绿格子?在github上提交代码之后,进入github上面查看自己的提交,可以看看刚刚的提交内容,但是却一直没有显示绿格子,一个原因是本地git的配置邮箱和github上面的邮箱不一致。解决方法:查看你的本地配置邮箱在命令行中输入:gitconfiguser.email查看你的本地配置邮箱.看看是否和github上面绑定的邮箱一致,如果不一致则更改一下。…

  • 数制与位权_进制转换题目

    数制与位权_进制转换题目数制的基本概念:人们在生产实践和日常生活中,创造了多种表示数的方法,这些数的表示规则称为数制。其中按照进位方式计数的数制叫进位计数制。位权:任何一个R进制的数都是由一串数码表示的,其中每一位数码

  • android 苹果 换机,苹果12怎么一键换机安卓?iPhone12一键换机功能操作步骤

    android 苹果 换机,苹果12怎么一键换机安卓?iPhone12一键换机功能操作步骤苹果12怎么从安卓一键换机?相信有很多朋友最近新购了iPhone12,但是原来安卓手机中有不少的联系人和文件资料,要是手动来备份还原,那就太麻烦了,所以这时候就需要用到一键换机功能了。下面我们就为大家带来了苹果12电脑端和手机端的一键换机教程,一起来看看吧!苹果12怎么一键换机安卓?iPhone12一键换机功能操作步骤苹果一键换机功能怎么操作1、使用QQ同步助手换机,我们可以在原来安卓或者旧苹果手…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号