我有一个 string (1, 2, 3, 4)
,我想将整数解析成一个数组。
我可以split(",\\s")
用来拆分除开始和结束元素之外的所有元素。我的问题是如何修改它以便忽略开头和结尾的括号?
匹配数字而不是匹配它们之间的空格会更好地为您服务。采用
final Matcher m = Pattern.compile("\\d+").matcher("(1, 2, 3, 4)");
while (m.find()) System.out.println(Integer.parseInt(m.group()));
使用 2 个正则表达式:第一个删除括号,第二个拆分:
Pattern p = Pattern.compile("\\((.*)\\)");
Matcher m = p.matcher(str);
if (m.find()) {
String[] elements = m.group(1).split("\\s*,\\s*");
}
并注意我对您的拆分正则表达式的修改。它更加灵活和安全。
你可以使用 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);
}
改为使用它split("[^(),\\s]")
。