专栏首页企鹅号快讯【新手笔记】关于Split方法

【新手笔记】关于Split方法

Split,把一个字符串分割成字符串数组。

以前是做C#的,前段时间做安卓开发,用了一下Split方法,发现分割后的长度比预期的少,检查了一下,发现java中的split方法和C#中的Split方法不太一样。

JAVA代码:

String string="abacadafaaa";

String[] strings =string.split("a");

结果:

strings为{"","b","c","d","f"},长度5。

C#代码:

string str = "abacadafaaa";

string[] strs = str.Split('a');

结果:

strs为{"","b","c","d","f","","",""},长度为8,如图

了解了一下,java的split方法,在只传一个参数的情况下,会把末尾的空元素去掉,但是开头和中间的不会,C#不会。于是查了资料,研究了一下。

----------

先说C#的Split方法(注意首字母大写):

string的Split有6个重载方法,返回值均为String[]类型,分别是:

Split(params char[] separator)

Split(char[] separator, int count)

Split(char[] separator, StringSplitOptions options)

Split(char[] separator, int count, StringSplitOptions options)

Split(String[] separator, StringSplitOptions options)

Split(String[] separator, int count, StringSplitOptions options)

其中,StringSplitOptions就是控制是否移除空元素的参数,如果设置为移除空元素,那么不管是前面还是中间还是结尾,所有的空元素都会移除。count 是拆分之后的数组最大长度。每个方法执行一遍,结果看图:

除了以上方法,C#还有支持正则表达式的拆分方法,这些方法在Regex类下,共有3个重载方法,返回值也都是String[]类型,它们分别是:

Split(string input, string pattern)

Split(string input, string pattern, RegexOptions options)

Split(string input, string pattern, RegexOptions options, TimeSpan matchTimeout)

里面的input是要分割的字符串,pattern是正则表达式,字符串会按照该表达式匹配的内容进行分割,options是匹配选项,matchTimeout是超时时间,如果超过该时间仍然没有匹配到,那么将引发异常(RegexMatchTimeoutException)。关于options,该枚举共有10个值,None不指定任何选项,IgnoreCase不区分大小写,Multiline多行模式,Compiled将正则表达式编译为程序集,Singleline单行模式,RightToLeft从右向左,CultureInvariant忽略区域性差异。其他具体的我也不太明白,用到再研究吧。不能发链接,自己去微软官网找一下吧……

注:Regex.Split方法没有去除空元素的参数。用法和结果如图:

----------

接着说说java中的split方法:

在java中的String.split方法,参数均为正则表达式,比如想要按照竖线()分割,参数要写"\\"。共有两个重载:

split(regularexpression)

split(regularexpression,intcount)

其中count指定结果最大长度,和上面C#的是一样的。

如果count为-1,将不会自动去掉空元素。

如果参数写成了竖线,结果将会是:

正确的写法如下:

----------

javascript中的split用法为:

string.split(separator,count)

其中,separator为分隔符,可以是字符串,也可以是正则表达式;count为返回值最大长度,与JAVA和C#不同,JAVA和C#会把后面的字符串放一起当做最后一个元素,而js会把所有分割玩的字符串的前count个元素返回,后面的都扔掉。执行结果如图:

原创文章,转载请注明出处。

本文来自企鹅号 - 全球大搜罗媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中国黑客六道:网络基础学习篇-获取天气信息

    无论是获取网络上的天气信息或者其它的信息,首先要做的,就是访问对方的服务器,向服务器发送请求,然后接收数据。 这里也是一样的,也是向服务器发送一个GET请求,然...

    企鹅号小编
  • 学习C+应该学什么?学完C+要收获什么?

    本节课我们来讨论学习C++的目的和学完后应该掌握些什么。对了,我们在讲述这些疑问时,你可以先看《C++ Primer Plus 第六版》这本书,先开始熟悉一些基...

    企鹅号小编
  • 区块链又放大招,助力农产品溯源技术节节高!

    经过两个多月的反复研究和测试,由上海指旺信息科技有限公司(以下简称“指旺金科”)与中兴能源公司通力合作,精心打造的“大米链”系统正式上线运营。 这是国内第一个正...

    企鹅号小编
  • thinkphp 3.2框架视图模型 实例视图查询结果的二维数组合并操作示例

    本文实例讲述了thinkphp 3.2框架视图模型 实例视图查询结果的二维数组合并操作。分享给大家供大家参考,具体如下:

    砸漏
  • C++primer笔记之关联容器

    在这一章中,有以下的几点收获: 1、pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef p...

    CloudDeveloper
  • C++基础变量

    变量的基本形式是:首先是类型说明符,随后紧跟有一个或者多个的变量名组成的列表,其中含有多个变量名时用逗号隔开,最后以分号结束。

    羊羽shine
  • 通俗易懂设计模式解析——组合模式

      今天介绍的是结构型设计模式中的第四个模式,也就是组合模式(Composite Pattern)。组合模式也好理解,就拿我们电脑的文件及文件夹来说吧,这就是一...

    小世界的野孩子
  • 『Go 内置库第一季:reflect』

    可以看到,如何获取数据类型,也可以看出 TypeOf 和 Kind 的区别,TypeOf 获取的是基本数据类型和以 type 定义的类型;Kind 获取的是底层...

    谢伟
  • 黑遍全世界,让全球互联网崩溃的美国前大学生认罪

    面对参与制造电脑病毒引起全世界互联网在2016年10月崩溃的指控,新泽西州罗格斯大学(Rutgers University)一名前学生星期三在特伦顿(Trent...

    企鹅号小编
  • 新型机器人将颠覆传统农业,保障人类“舌尖上的安全”

    随着生活水平不断提升,民众对食品安全也越来越关注,在欧洲,消费者非常在意“舌尖上的安全”,希望食品有一个安全的供应链,当然,也希望生物的多样性得到保护。

    机器人网

扫码关注云+社区

领取腾讯云代金券