繁体   English   中英

使用正则表达式和限制的String.split没有预期的行为

[英]String.split with a regex and a limit doesn't have expected behaviors

我正在开发一个简单的小工具,通过在xpath中找到“ /”并使用java的split方法,将特定元素的xpath分成较小的部分。 我的代码如下:

String test = "/html[1]/body[1]/div[1]/div[7]/div[3]/form[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/a[1]";
String[] split = test.split("/");
for (int i = 0; i < split.length; i++) {
  System.out.println(split[i]);
}

它成功了,我得到了结果:

html[1]
body[1]
div[1]
div[7]
div[3]
form[1]
div[1]
div[1]
div[1]
div[2]
div[1]
div[2]
a[1]

但是,后来我决定将xpath分成2个部分,并用xpath中的第一个“ /”分隔。 我使用了带有正则表达式和限制的split方法,将代码更改为:

 String test = "/html[1]/body[1]/div[1]/div[7]/div[3]/form[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/a[1]";
 String[] split = test.split("/",2);
 for (int i = 0; i < split.length; i++) {
   System.out.println(split[i]);
 }

它不起作用,并给出结果:

html[1]/body[1]/div[1]/div[7]/div[3]/form[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/a[1]

感谢melli-182的评论,我意识到它实际上是将字符串分为空字符串和原始字符串,这不是我期望的。 有没有办法使其正常工作?

非常感谢你!

拆分功能可以正常运行,结果已在拆分文档中进行了说明和说明

考虑到第二种情况下的分割字符串是两个,第一个是空字符串(因为“ /”之前没有任何内容),第二个字符串是您共享的字符串。

我认为您的拆分效果很好。 应该打印一个空行。
test字符串中的第一个字符是'/',它将把它分成“”和“ html ...”。
尝试split("/", 3) ,它应该为您提供“”,“ html [1]”和“ body [1] .....”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM