2012-05-16 58 views
1

我有一个字符串(1, 2, 3, 4),我想将整数解析成数组。java字符串拆分正则表达式

我可以用split(",\\s")分裂,但所有的开始和结束的元素。我的问题是我如何修改它,所以开始和结束括号会被忽略?

+4

你有没有想过在看从1到长度为2的子?如果你这样做,那么字符串应该可以分离。 – pippin1289

回答

3

您最好通过匹配数字而不是匹配它们之间的空格来服务。使用

final Matcher m = Pattern.compile("\\d+").matcher("(1, 2, 3, 4)"); 
while (m.find()) System.out.println(Integer.parseInt(m.group())); 
+1

这是当然是这样做的正确方式 –

+1

数据越不可靠,这个解决方案越好。 –

0

更改为使用split("[^(),\\s]")代替。

+0

这将创建2个额外的元素:开始和结束时的空字符串。 – AlexR

2

使用正则表达式2:第一,消除括号,第二是分裂:

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

而且在我的正则表达式拆分修改留意。它更加灵活和安全。

1

你可以使用字符串(),然后拆分( “”)

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); 
    }