我要拆分的是以下字符串:
<java><jquery><comments>
我使用以下分割方法:
String s = "<java><jquery><comments>";
String[] arr = s.split("<|>");
for(String a: arr){
System.out.println(a);
}
输出如下:
java
jquery
comments
问题是我不想要空行。从拆分返回的数组的大小是6.我想要的只是3个字母的字符串。
我应该使用正则表达式来获取所有字母,还是像上面那样使用拆分?
答案 0 :(得分:6)
将拆分更改为s.split("[<>]+")
。但是,数组开头仍会有""
,这是how split works所致。
答案 1 :(得分:2)
我认为而不是String#split你应该使用Pattern,Matcher和Matcher#find:
Pattern p = Pattern.compile("<([^>]+)>");
Matcher m = p.matcher("<java><jquery><comments>");
for (int i=0; m.find(); i++)
System.out.printf("MATCHED[%d]: [%s]%n", i, m.group(1));
MATCHED[0]: [java]
MATCHED[1]: [jquery]
MATCHED[2]: [comments]
答案 2 :(得分:0)
您还可以使用 StringTokenizer 对象根据正确的模式拆分字符串。