我試圖拆分字符串看起來像如何使用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
其實我在編程比賽中遇到過這個問題.. –