如果你使用
),(
来分割字符串,你将不能删除字符串开头的
(
和结尾的
)
。考虑使用Pattern和Matcher类来查找
(
和
)
之间的元素。
String text = "(1,0,quote),(1,0,place),(1,0,hall),(2,0,wall)";
Pattern p = Pattern.compile("\\(([^)]+)\\)");
Matcher m = p.matcher(text);
while(m.find()) {
System.out.println(m.group(1));
}
输出:
1,0,quote
1,0,place
1,0,hall
2,0,wall
如果你想在“),(”上使用split方法,你需要手动删除第一个“(”和最后一个“)”,因为split只会删除应该分割的部分。此外,你还需要转义括号“)”和“(”,因为它们是正则表达式元字符(例如用于创建组)。为了做到这一点,你可以在每个“)”和“(”前面手动添加“\\”,或者你可以用“\\Q”和“\\E”将“),(”括起来,以将这些元素之间的字符标记为文字。但你不必手动完成这个过程。只需使用Pattern.quote来生成带有所有元字符的转义符的正则表达式,并将其用作split方法的参数,如下所示:
//I assume that `text` already removed `(` and `)` from its start and end
String[] array = text.split(Pattern.quote("),("));
()
,请使用正则表达式或编写真正的解析器。或者使用已经解决此问题的真正序列化:JSON。 - Matt Ball),(
进行分割呢? - crush