关于String的split方法

在做剑指offer的时候,有一道替换空格的题,立刻就想到用这个split方法来做,但发现,这个方法会丢掉字符串最后的空格???

百度后,知道原因,这里直接复制粘贴了:

在使用java中的split按照“\t”,拆分字符串的时候,发现如果最后的几个字段是空,只是用\t分割,是连着的\t的话,就不会被分割,如 “d\tc\te\t\t\t”最后的几个\t就不会被分割,应该是在拆分之前对字符串进行了处理。导致的拆分字段个数错误。查了一下APi,需要在split中添加参数-1,String[] values = line.split("\t",-1);

imit 参数控制应用模式的次数,从而影响结果数组的长度。(当然这个limit参数的本意是返回的数组的长度,那么实现的方法肯定就是使用这个split的次数嘛。)

如果限制 n 大于零,那么模式至多应用 n> - 1 次,数组的长度不大于 n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入

如果 n 非正,那么将应用模式的次数不受限制,并且数组可以为任意长度

如果 n 为零,那么应用模式的次数不受限制,数组可以为任意长度,并且将丢弃尾部空字符串  (就是这个原因)

添加上参数-1之后,就正常了。
---------------------
作者:Eric-L90
来源:CSDN
原文:https://blog.csdn.net/brotherdong90/article/details/45168405
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/wangshen31/p/10602782.html

时间: 2024-08-09 03:52:23

关于String的split方法的相关文章

String的split()方法探索和大揭秘

其实没打算写这么一篇博文的,但是昨天在逛论坛的时候,发现一帖子,然后我又把帖子的内容在群里发了一通,结果出现了让人惊讶的结果,所以这里简单的给大家分享一下split()方法,免得大伙儿以后还会出现这种基本知识错误! 接着说一下,昨天看到的帖子内容: String[] str1 = ";;;".split(";"); String[] str2 = ";a;;".split(";"); String[] str3 = "

关于String的split方法的一点疑问

今天莫名其妙的又做了一下leetcode上面的第一题,是简单的字符串逆序输出问题.下面是我处理的代码: public String reverseWords(String s) { if(s == null) return new String(""); StringBuffer fir = new StringBuffer(s); if(fir.length() == 0) return new String(""); while(fir.length() !=

Java中String的split()方法的一些需要注意的地方

项目中我用到了字符串的split()方法,为这种方法的方便称赞,可是程序在测试的时候出现的问题折腾了我好久,原来在使用的时候存在着以下几个需要注意的地方. 本来使用split()方法是判断String的数量,结果这么的不靠谱,最后换成了hashset动态添加字符串,然后求hashset.size()的方法得到字符串的个数解决的.... Java代码   public String[] split(String regex, int limit) split函数是用于使用特定的切割符(regex)

String的split()方法的使用注意点

当我们需要对字符串进行切割时,会想到使用String的split()方法,但要想真正达到使用效果,需要注意以下几点: 一个参数时,即方法:public String[] split(String regex): 如果用"."作为分隔,必须用:String.split("\."),这样才能正确的分隔开,不能用String.split(".");. 如果用"|"作为分隔,必须用:String.split("\|"

高效使用String.split方法

首先来看split的源码: public String[] split(String regex, int limit) {    /* fastpath if the regex is a     (1)one-char String and this character is not one of the        RegEx's meta characters ".$|()[{^?*+\\", or     (2)two-char String and the first c

string.split()与re.split()方法区别

re模块的split()方法与字符串的split()方法相似,前者是根据 正则表达式模式 分隔字符串,后者是根据 固定的字符串 分割,因此与后者相比,显著提升了字符分割的能力. 如果分隔符没有使用由特殊符号表示的正则表达式来匹配多个模式,那 re.split()和 string.split()的执行过程是一样的. string.split()与re.split()方法区别,布布扣,bubuko.com

java中String对象的split方法

在java.lang包中有String.split()方法,返回是一个String[]数组,今天碰到一个自己没注意的问题: 1.特殊分隔符 String str1 = "123|456|789"; System.out.println(str1.split("|")[0]); 结果是1 这里要注意的是"|"作为分隔符要写成这样 System.out.println(str1.split("\\|")[0]); 同理如果用&qu

C# String.split()用法小结。String.Split 方法 (String[],?StringSplitOptions)

split()首先是一个分隔符,它会把字符串按照split(' 字符')里的字符把字符串分割成数组,然后存给一个数组对象. 输出数组对象经常使用foreach或者for循环. 第一种方法 string s=abcdeabcdeabcde; string[] sArray=s.Split('c') ; foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab deab deab de 第二种方法 我们看到了结果

【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!

split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator],[limit])参数:stringObj   必选项.要被分解的 String 对象或文字.该对象不会被 split 方法修改.separator 可选项.字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符.如果忽 略该选项,返回包含整个字符串的单一元素数组. limit可选项.该值用来限制返回数组中的元素个数. 说明:split 方法的结果