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连续的两个” , “间 觉得有个空格符“ “也能够。不正确的地方请大家帮指出来 不胜感激 。


 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 字典最外层使用_python字典底层实现

    python 字典最外层使用_python字典底层实现前言问题1:python中的字典到底是有序还是无序问题2:python中字典的效率如何python字典底层原理在Python3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插

    2022年7月31日
    3
  • windows cmd命令大全及详解_win10 cmd命令

    windows cmd命令大全及详解_win10 cmd命令命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。一、启动CMD命令提示符控制器“开始”→“运行”→输入“cmd”回车;或者:win+R(两个键同时按)打开“运行”窗口→输…

    2022年9月22日
    0
  • PHP工厂模式的好处

    PHP工厂模式的好处 顾名思义,工厂是可以加工零件的,PHP程序中的工厂模式也有相同的功能,可以方便的使用一个静态的工厂方法来实例化某一个类,那么这样做的好处是什么呢?初学PHP的设计模式,以下是我个人的理解 一般我们实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。举例说明,以下是一个User类,非常简单:01.02.      03.    int

    2022年7月25日
    10
  • 如何删除LDSGameMaster里的CheckHp.dll「建议收藏」

    如何删除LDSGameMaster里的CheckHp.dll「建议收藏」之前安装软件不小心下载了捆绑软件鲁大师,后来卸载没卸干净,留下了LDSGameMaster文件夹,直接删除文件夹,里面CheckHp.dll删不动,报错说需要Administors权限。鼠标右键单击该文件夹,选择“属性”,在选项卡中选择“安全”,点击“高级”,点击“当前用户”。单机“编辑”,弹出的对话框中选择“允许”,之后全部选择“确定”即可解决问题。没有来得及截图,放一张当时跟着做的百度截图…

    2022年6月12日
    55
  • 一生要看的50部经典电影

    一生要看的50部经典电影

    2021年5月4日
    159
  • L3-008 喊山(堆优化dijsktra+队列bfs)「建议收藏」

    L3-008 喊山(堆优化dijsktra+队列bfs)「建议收藏」原题链接喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newsshow-8018.html)一个山头呼喊的声音可以被临近的山头同时听到。题目假设每个山头最多有两个能听到它的临近山头。给定任意一个发

    2022年8月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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