網頁

2019/5/30

Java 分割字串String中以方括弧包起來的值

要將多個方括弧[...]包起的字串分割並取出的做法如下。

使用正則表示式regex來取得每個括號中的值。

String s1 = "[1][1,2,3][1,2,3,4,5]";
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
Matcher match = pattern.matcher(s1);

List ss1 = new ArrayList<>();
while (match.find()) {
    ss1.add(match.group(1));
}
for (String s : ss1) {
    System.out.println(s);
}

System.out.println("===========================");

String s2 = "[1],[1,2,3],[1,2,3,4,5]";
match = pattern.matcher(s2);
List ss2 = new ArrayList<>();
while (match.find()) {
    ss2.add(match.group(1));
}
for (String s : ss2) {
    System.out.println(s);
}

印出結果如下

1
1,2,3
1,2,3,4,5
===========================
1
1,2,3
1,2,3,4,5

方括號(square brackets)[]在正則表示式中有特殊意義,所以實字用跳脫符號\\[來表示。

點(period).符號代表任意字元。

星號(asterisk)*表示前面的字符可以出現0次或多次,因為前面是\\[.,所以代表左方括弧後接任意符號可以出現0次或多次

問號(question mark)?表示前面的字符可以出現0次或1次,因為前面是\\[.*,後面是\\],所以代表左方括弧後接任意符號可以出現0次或1次,而且後面必須緊接著]


參考:

沒有留言:

張貼留言