2017-04-03 148 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

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