1

我有一个 string (1, 2, 3, 4),我想将整数解析成一个数组。

我可以split(",\\s")用来拆分除开始和结束元素之外的所有元素。我的问题是如何修改它以便忽略开头和结尾的括号?

4

4 回答 4

3

匹配数字而不是匹配它们之间的空格会更好地为您服务。采用

final Matcher m = Pattern.compile("\\d+").matcher("(1, 2, 3, 4)");
while (m.find()) System.out.println(Integer.parseInt(m.group()));
于 2012-05-16T18:34:29.600 回答
2

使用 2 个正则表达式:第一个删除括号,第二个拆分:

Pattern p = Pattern.compile("\\((.*)\\)");
Matcher m = p.matcher(str);
if (m.find()) {
    String[] elements = m.group(1).split("\\s*,\\s*");
}

并注意我对您的拆分正则表达式的修改。它更加灵活和安全。

于 2012-05-16T18:34:21.337 回答
1

你可以使用 substring() 然后 split(",")

  String s = "(1,2,3,4)";
  String s1 = s.substring(1, s.length()-2);//index should be 1 to length-2
  System.out.println(s1);

  String[] ss = s1.split(",");
  for(String t : ss){
    System.out.println(t);
  }
于 2012-05-16T18:40:22.570 回答
0

改为使用它split("[^(),\\s]")

于 2012-05-16T18:32:23.943 回答