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

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

接着说一下,昨天看到的帖子内容:

String[] str1 = ";;;".split(";");
String[] str2 = ";a;;".split(";");
String[] str3 = ";;a;".split(";");
System.out.println(str1.length);
System.out.println(str2.length);
System.out.println(str3.length);

大伙儿也可以先说说自己心里第一反应的答案是什么,记录下来,然后再慢慢得往下看,最后比一下结果!这种问题,在好多的面试过程中,面试技术的人都会问这种很具有代表性的基础知识!

如果大家经常看jdk api的话,这种问题应该不会犯错!

public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 

例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: 

Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" } 

参数:
regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效

这里面已经介绍的很清楚了,不知道有没有细心的人发现了这句很重要的话!

最终的结果是:

str1的长度是:0

str2的长度是:2

str3的长度是:3

你的答案对了吗?这里不多说了,答案就在“所得数组中不包括结尾空字符串”,自个慢慢理解一下!

String的split()方法探索和大揭秘,布布扣,bubuko.com

时间: 2024-12-20 18:49:59

String的split()方法探索和大揭秘的相关文章

关于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方法

在做剑指offer的时候,有一道替换空格的题,立刻就想到用这个split方法来做,但发现,这个方法会丢掉字符串最后的空格??? 百度后,知道原因,这里直接复制粘贴了: 在使用java中的split按照“\t”,拆分字符串的时候,发现如果最后的几个字段是空,只是用\t分割,是连着的\t的话,就不会被分割,如 “d\tc\te\t\t\t”最后的几个\t就不会被分割,应该是在拆分之前对字符串进行了处理.导致的拆分字段个数错误.查了一下APi,需要在split中添加参数-1,String[] valu

java中String类intern()方法探索

想到什么写什么,会有点乱,意思理解就行 首先我们创建两个字符串对象,如下: String a = new String("hx"); String b = new String("h")+new String("x"); 通过new关键字创建字符串对象时,会同时在堆和常量池中生成两个对象,比如说上面的第一条语句产生两个内容均为"hx"的对象,一个在堆中,一个在常量池中,a引用的是堆中的对象,内容是"hx";

高效使用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

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

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

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