我想将值拆分{200,200}
为两个字符串(200
和200
),删除逗号和括号。
但是当我尝试使用标准模式时,^\{*|,|\}*$
我得到一个错误(非法转义字符)我如何在 Java 中进行这种拆分?
String[] d = a.split("^\{*|,|\}*$");
在 Java 中,您必须将正则表达式中的转义字符加倍:
String [] data = a.split("^\\{*|,|\\}*$");
这是因为正则表达式在字符串文字中,而转义字符在字符串文字中已经有意义。
试试这个更简单的正则表达式:
String[] data = a.split("[,{}]");
答案将在职位data[1]
和data[2]
对于您的特定示例,这应该比 split 快得多:
int i = a.indexOf(',');
String s1 = a.substring(1, i);
String s2 = a.substring(i+1, a.length()-1);
如果您所有的初始数据字符串都以 开头{
,以结尾}
并且可能包含许多逗号分隔的值,那么拆分将像a.substring(1, a.length()).split(",")
.
直接的问题(正如另一位响应者指出的那样)是您没有转义反斜杠以在 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。