2017-04-03 81 views
4

我想要读取文本文件,按照下面的说明拆分内容,并将拆分注释附加到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 
... 

请建议如何解决此问题。

+1

老兄,使用:str.split(“,”); – user218046

+3

围绕其拆分的令牌不会再包含在结果中。解决方案将是重新使用令牌。 – Paul

+4

当您拆分/修剪时,您正在删除“)”。最简单的方法是追加一个右括号。 – ollie

回答

9

使用在你的正则表达式positive lookbehind

String[] subSplit = obj.split("(?<=\\)), "); 

这个表达式匹配由)前面有一个,,而是因为回顾后部分(?<=\\))非捕获(零宽度),它没有得到作为拆分分离器的一部分而丢弃。

有关lookaround断言和非捕获组的更多信息,请参见javadoc of the Pattern class

+0

这很棒。你能解释一下分裂的情况吗? –

+0

我已经更新了我的答案。 –