如何使用Java拆分字符串?

时间:2011-11-25 12:11:00

标签: java regex string split

我试图拆分一个看起来像这样的字符串

<a><b><c></c></b></a>

使用java使用以下代码

String[] s =input.split("[<>]+");
System.out.println(Arrays.toString(s));

这是输出

[, a, b, c, /c, /b, /a]

我不知道该怎么做才能在结果数组的开头摆脱这个空字符串。
有什么建议吗?

5 个答案:

答案 0 :(得分:4)

有一种使用正则表达式匹配的替代方法:

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]

答案 1 :(得分:1)

通常情况下。如果要删除第一个空元素,请使用next:

    String input = "<a><b><c></c></b></a>";
    String[] strs = input.split("[<>]+");
    String[] s =Arrays.copyOfRange(strs, 1, strs.length);

或者循环寻找空元素。

答案 2 :(得分:1)

如果您准备使用Google Guava库,那么Splitter有一种使用Splitter#omitEmptyStrings()省略空字符串的简洁方法。

答案 3 :(得分:0)

您将需要遍历所有元素以摆脱空元素。

答案 4 :(得分:0)

如果您确定输入格式,可以这样做:

String[] s =input.substring(1).split("[<>]+");
System.out.println(Arrays.toString(s));