2012-04-05 106 views
1

我有從i。由線讀取線一個文件,我已經寫用於獲得字符串的特定部分(從該行)的代碼的線,其配備兩個特定詞語例如之間的特定的字符串獲取從寫入文件

[abc] long time ago [cde] 

現在我已經寫了下面的代碼獲得字符串很久以前

if (line.contains("[abc]") && line.contains("[cde]")) { 
    int b = line.indexOf("abc"); 
    int cc = line.indexOf("cde"); 
    String tk = line.substring(b + 4, cc); 
    System.out.println(tk); 
} 

此代碼工作正常,但現在的問題是that.i遇到以下行

[abc] long time ago [cde] [abc] Everyday is a new day [cde] 

現在,只要給我一個想法如何獲得這兩個字符串...因爲他們都在同一行,我的代碼只是認爲第一個...

+0

文件是否會有重疊標籤?即'[ABC]很久以前[ABC]天天[CDE]是新的一天[CDE]' – Jim 2012-04-05 15:51:37

+0

@不,他們不重疊.. – Xara 2012-04-05 17:57:12

回答

3
while (line.contains("[abc]") && line.contains("[cde]")) { 
    int b = line.indexOf("abc"); 
    int cc = line.indexOf("cde"); 
    String tk = line.substring(b + 4, cc); 
    System.out.println(tk); 
    line = line.substring(cc + 4); 
} 
+0

@MДΓΓБДLL這給出了一個死循環...它不斷重複很久以前的事... :( – Xara 2012-04-05 17:52:04

+0

問題在別處,這個部分適用於我。http://ideone.com/XeZy6 – 2012-04-05 18:03:55

+0

非常感謝,它工作...我犯了一個愚蠢的錯誤 – Xara 2012-04-05 18:19:23

0

使用正則表達式of this link因爲它們將匹配給定字符串的每個出現位置。