我想将{200,200}
之类的值拆分为两个字符串(200
和200
),删除逗号和括号。
但是当我尝试使用标准模式^\{*|,|\}*$
时,我收到错误(非法转义字符)如何在Java中进行这种拆分?
String[] d = a.split("^\{*|,|\}*$");
答案 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。