Java 不确定在这种情况下字符串拆分实际上是如何工作的
我不明白以下几点: 在以下Java 不确定在这种情况下字符串拆分实际上是如何工作的,java,regex,string,split,Java,Regex,String,Split,我不明白以下几点: 在以下字符串中: String s=“1234;x;y;” 如果我这样做: String[]s2=s.split(“;”) 我得到s2。长度为4和 s2[0] = "1234"; s2[1] = "x"; s2[2] = ""; s2[3] = "y"; 但是在字符串中:string s=“1234;x;y;;” 我得到: s2.长度为3和 s2[0] = "1234"; s2[1] = "x"; s2[2] = "y"; ? 有什么区别,在后一种
字符串中
:
String s=“1234;x;y;”代码>
如果我这样做:
String[]s2=s.split(“;”)代码>
我得到s2。长度为4和
s2[0] = "1234";
s2[1] = "x";
s2[2] = "";
s2[3] = "y";
但是在字符串中:string s=“1234;x;y;;”代码>
我得到:
s2.长度
为3和
s2[0] = "1234";
s2[1] = "x";
s2[2] = "y";
?
有什么区别,在后一种情况下我也没有得到4
更新:
使用-1
并不是我期望的行为。
我的意思是最后一个分号是字符串的结尾,因此在后一个示例中,我还希望4
作为
此方法的工作方式类似于通过调用具有
给定的表达式和零的极限参数。尾随空
因此,结果数组中不包括字符串
更新:
您有五个子字符串,由分隔代码>在第二种情况下,它们是1234
,x
,y
,
和
。根据文档,拆分操作产生的所有空子字符串(在末尾)都将被删除。
有关详细信息,请参见
如果n为零,则该模式将应用尽可能多的次数
可能的话,数组可以有任何长度,尾随空字符串
将被丢弃
例如,字符串boo:and:foo
,使用这些参数生成以下结果:
Regex Limit Result
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" } // all the empty substrings at the end were eliminated
从)
该方法的工作原理类似于使用给定表达式和零限制参数调用双参数split方法。因此,结果数组中不包括尾随的空字符串
省略尾随的空字符串。但是,如果需要的话,有一些方法可以明确地包含它们。好问题。如果检查String.split()
并用“boo:foo”检查示例,则可以看到后面的空字符串被忽略
该方法的工作原理类似于使用给定表达式和零限制参数调用双参数split方法。因此,结果数组中不包括尾随的空字符串
例如,字符串“boo:and:foo”使用以下表达式生成以下结果:
正则表达式结果
:{“boo”,“and”,“foo”}
o{“b”、“”、“:和:f”}
为什么不先检查一下文件上说了什么。以下是链接:
以下是你的答案:
因此,结果中不包括尾随的空字符串
数组
这是java中split方法不返回空令牌的默认行为。]
s、 拆分(“\;”,-1);应该返回空令牌您的问题正是文档()中提到的问题。因此,我认为这不是一个恰当的选择question@AdelBoutros:我认为你在这里太苛刻了,当然这种行为在javadocs中有记录,但考虑到在这里被问到的问题太多,我相信Jim问了一个相当不错的问题,方法有些奇怪。他唯一的失误就是在询问之前没有检查javadocs。Java的拆分
是模仿Perl的,这就是为什么它是这样工作的。我明白了。但是我不能得到与第一个字符串完全相同的结果,对吗?即长度4,因为最后一个分号实际上是字符串的结尾是的,对,您想输入最后一个尾随的空字符串。我不认为您可以临时这样做,但如果您始终确定最后一个元素是分号,则始终可以只拆分字符串的前缀:s.substring(0,s.length()-1)。拆分(“;”,-1)代码>虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Neo很明显他们是这样的,因为目前我的链接指向一些博彩网站。。。遗憾的是,这是一个很久以前的答案,来自一个经验较少的我,要重建链接中的内容并不容易。因此,我将删除它。