如何分割像{200,200}这样的字符串

时间:2013-02-08 22:46:01

标签: java regex string split

我想将{200,200}之类的值拆分为两个字符串(200200),删除逗号和括号。

但是当我尝试使用标准模式^\{*|,|\}*$时,我收到错误(非法转义字符)如何在Java中进行这种拆分?

String[] d = a.split("^\{*|,|\}*$");

5 个答案:

答案 0 :(得分:4)

在Java中,您必须将正则表达式中的转义字符加倍:

String [] data = a.split("^\\{*|,|\\}*$");

这是因为正则表达式在String文字中,并且转义字符在字符串文字中已经有意义。

答案 1 :(得分:1)

尝试这个更简单的正则表达式:

String[] data = a.split("[,{}]");

答案将在data[1]data[2]

位置

答案 2 :(得分:0)

对于您的特定示例,这应该比分割快得多:

int i = a.indexOf(',');
String s1 = a.substring(1, i);
String s2 = a.substring(i+1, a.length()-1);

答案 3 :(得分:0)

如果您的所有初始数据字符串都以{开头,则以}结尾,并且可能包含许多以逗号分隔的值,则拆分就像a.substring(1, a.length()).split(",")一样简单。

答案 4 :(得分:0)

直接问题(作为另一个响应者pointed out)是你没有转义反斜杠以用于Java字符串文字。

split()无论如何都是这项工作的错误工具。执行正常匹配并通过捕获组提取所需的子串更容易:

String[] result = new String[2];
Pattern p = Pattern.compile("^\\{(\\d+),(\\d+)\\}$");
Matcher m = p.matcher("{200,200}");
if (m.matches()) {
    result[0] = m.group(1);
    result[1] = m.group(2);
}

我知道对于这样一个简单的任务来说,这似乎是太多的代码,但这对你来说就是Java。