1

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

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

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

5 回答 5

4

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

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

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

于 2013-02-08T22:47:18.690 回答
1

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

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

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

于 2013-02-08T22:50:25.800 回答
0

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

int i = a.indexOf(',');
String s1 = a.substring(1, i);
String s2 = a.substring(i+1, a.length()-1);
于 2013-02-08T23:02:21.823 回答
0

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

于 2013-02-09T21:40:29.090 回答
0

直接的问题(正如另一位响应者指出的那样)是您没有转义反斜杠以在 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。

于 2013-02-10T00:40:16.240 回答