2015-05-18 27 views
0

我已經創建了一個方法BufferedReader,該方法打開之前由程序創建的文本文件並提取一些字符。我的問題是,它提取了整個行,​​我只想提取一個指定的字符後,:Java從文本上的某個點提取文本文本

這裏是我的try/catch塊:

try { 
    InputStream ips = new FileInputStream("file.txt"); 
    InputStreamReader ipsr = new InputStreamReader(ips); 
    BufferedReader br1 = new BufferedReader(ipsr); 

    String ligne; 
     while((ligne = br1.readLine()) != null) { 
      if(ligne.startsWith("Identifiant: ")) { 
       System.out.println(ligne); 
       id = ligne; 
      } 
      if(ligne.startsWith("Pass: ")) { 
       System.out.println(ligne); 
       pass = ligne; 
      } 
     } 
     System.out.println(ligne); 
     System.out.println(id); 
     System.out.println(pass); 
     br1.close(); 
    } catch (Exception ex) { 
     System.err.println("Error. "+ex.getMessage()); 
    } 

此刻,我要回到我的String ID整個ligne,和同爲pass - 順便說一下,所有的sysout是測試和是無用的存在。

如果有人知道如何發送到:後面的行而不是整行,我可能搜索不好,但谷歌不是我的朋友。

回答

1

假設只有一個:符號的字符串中你可以用

id = ligne.substring(ligne.lastIndexOf(':') + 1); 
+0

每行確實只有一個':',它效果很好。感謝你的回答,我發現了子串方法,非常強大。 – fselva

+0

或'id = id.substring(id.indexOf(':')+ 1);'如果你想在第一次後啓動':'... –

+0

我剛剛編輯了我的答案,你應該從ligne子字符串不id,抱歉。 – Stugal

0

使用StringUtils的

StringUtils.substringAfter(ID 「:」)去,

+0

我也會試試這個解決方案,謝謝 – fselva

0

爲什麼你不試圖在ligne上做split()嗎?

如果使用String[] splittedLigne = ligne.split(":");,你將不得不在splittedLigne如下:

splittedLigne[0] - >什麼是前:

splittedLigne[1] - >什麼是:

後,這會給你什麼你需要每一行。此外,如果您有多個:,這將適用於您。

+0

拆分方法,謝謝你的回答,我也會試試:)也許更好的是,如果它的工作方式超過每行'':''。 – fselva