我试图拆分字符串看起来像如何使用Java分割字符串?
<a><b><c></c></b></a>
用java使用下面的代码
String[] s =input.split("[<>]+");
System.out.println(Arrays.toString(s));
,这是输出
[, a, b, c, /c, /b, /a]
我不知道应该怎样我会在结果数组的开头摆脱这个空字符串。
有什么建议吗?
我试图拆分字符串看起来像如何使用Java分割字符串?
<a><b><c></c></b></a>
用java使用下面的代码
String[] s =input.split("[<>]+");
System.out.println(Arrays.toString(s));
,这是输出
[, a, b, c, /c, /b, /a]
我不知道应该怎样我会在结果数组的开头摆脱这个空字符串。
有什么建议吗?
存在使用正则表达式匹配的替代方法:
String input = "<a><b><c></c></b></a>";
Pattern p = Pattern.compile("<(.+?)>");
Matcher m = p.matcher(input);
ArrayList<String> s = new ArrayList<String>();
while(m.find())
s.add(m.group(1));
System.out.println(s.toString());
输出: [A,B,C,/ C,并/ b,/ A]
您将需要遍历所有元素来摆脱空的。
我以为我在我输入的那个正则表达式中做了错误 –
这是正常的。如果你想删除第一个空的元素使用下一个:
String input = "<a><b><c></c></b></a>";
String[] strs = input.split("[<>]+");
String[] s =Arrays.copyOfRange(strs, 1, strs.length);
或者在循环寻找空的元素。
如果你知道有关输入格式,你可以这样做:
String[] s =input.substring(1).split("[<>]+");
System.out.println(Arrays.toString(s));
是的,我确定...但是我的问题是我应该明确吗?或者有其他的方式..就像改变这种模式可能? –
不是真的。在第一次匹配之前split将总是返回一些东西,除非在返回整个字符串时没有匹配 – soulcheck
如果你是为使用谷歌番石榴库,然后Splitter有一个整洁的方式使用Splitter#omitEmptyStrings()
省略空字符串。
为什么要去做?如果您正在处理XML,最好使用适当的XML工具。 – Tomalak
其实我在编程比赛中遇到过这个问题.. –