拆分并替换Java字符串
问题描述:
我想要读取文本文件,按照下面的说明拆分内容,并将拆分注释附加到Java列表中。拆分并替换Java字符串
错误在分裂部分。
现有的字符串:
a1(X1, UniqueVar1), a2(X2, UniqueVar1), a3(UniqueVar1, UniqueVar2)
预计,分裂他们,并把它们添加到Java列表:
a1(X1, UniqueVar1)
a2(X2, UniqueVar1)
a3(UniqueVar1, UniqueVar2)
代码:
subSplit = obj.split("\\), ");
for (String subObj: subSplit)
{
System.out.println(subObj.trim());
}
结果:
a1(X1, UniqueVar1
a2(X2, UniqueVar1
...
请建议如何解决此问题。
答
使用在你的正则表达式positive lookbehind:
String[] subSplit = obj.split("(?<=\\)), ");
这个表达式匹配由)
前面有一个,
,而是因为回顾后部分(?<=\\))
非捕获(零宽度),它没有得到作为拆分分离器的一部分而丢弃。
有关lookaround断言和非捕获组的更多信息,请参见javadoc of the Pattern
class。
+0
这很棒。你能解释一下分裂的情况吗? –
+0
我已经更新了我的答案。 –
老兄,使用:str.split(“,”); – user218046
围绕其拆分的令牌不会再包含在结果中。解决方案将是重新使用令牌。 – Paul
当您拆分/修剪时,您正在删除“)”。最简单的方法是追加一个右括号。 – ollie