2013-05-10 187 views
0

使用java我如何閱讀每行具有分隔符CRLF(\ r \ n)的段落。 例如如何使用java讀取每行具有CRLF( r n)作爲分隔符的行集合

4 \ r \ n 這\ r \ n 8 \ r \ n 響應\ r \ n

我想提取4並將其存儲到緩衝器中,然後讀出8和存儲爲這一段。 請幫幫我。

+0

該文件從哪裏來?爲什麼每個單詞都以其長度開頭? – jlordo 2013-05-10 07:20:58

+0

我不確定我是否理解這個問題,你是否想要閱讀'4','這個','8','迴應',還是作爲jlordo說數字是後面的單詞的長度?只要你堅持一個特定的分隔符,我就看不到任何需要這種用例的用例。 – nvrs 2013-05-10 07:27:08

+0

我想在分塊傳輸編碼的情況下讀取http響應。每個塊都帶有大小和塊數據。所以我只需要大小,每個塊都有分隔符\ r \ n。在這種情況下,我需要它。 – user2365917 2013-05-10 08:02:09

回答

0

我不太清楚你必須做什麼,但如果你必須從你的文本中獲得字符串,你可以通過遵循我的解決方案。

這可能不是最好的方法,但它使用StringTokenizer\r\n作爲分隔符。

StringTokenizer st1 = new StringTokenizer("4\r\n This\r\n 8\r\n response\r\n", "\r\n"); 

//iterate through tokens 
while (st1.hasMoreTokens()) { 
    String str = st1.nextToken(); 
    System.out.println(str);   
} 

這將打印

響應

此,當然,是有用如果您不是從文件中讀取數據,而是剛收到完整字符串,則需要從中提取數據。

如果您正在閱讀文件,您應該檢查其他答案爲BufferedReader.readLine是正確的方法。

編輯:

這裏的新代碼:

StringTokenizer st1 = new StringTokenizer("4\r\n This\r\n 8\r\n response\r\n", "\r\n"); 

//iterate through tokens 
while (st1.hasMoreTokens()) { 
    String str = st1.nextToken(); 
    try{ 
     //Integer.parseInt throws an exception in the input String doesn't represent a number so we catch the exception and we simply skip it. This will just output each number in your string. 
     int i = Integer.parseInt(str.trim()); 
     System.out.println(i); 
    } catch (NumberFormatException e){}    
} 

現在它只是。OUPUTS:

+0

謝謝。但我想在我的輸出4中跳過\ r \ n並跳過「this」,再次我想要8.我該如何做這個? – user2365917 2013-05-10 08:32:34

+0

我已經更改了代碼。 – StepTNT 2013-05-10 08:41:58

+0

非常感謝你。我會嘗試這個。 – user2365917 2013-05-10 08:59:59

0

使用BufferedReader.readLine()只讀行,或Scanner如果你想自動解析數字。

0

我不太清楚你需要什麼輸出,但BufferedReader類將允許你逐行讀取文本文件。有幾個例子on the internet

readLine方法將執行以下操作:

讀取一行文本。換行符被換行符('\ n'),回車符('\ r')或回車符後面的換行符中的任何一個結束。

+0

我想用while循環讀取上面例子4和8中的數字,while(line!= null)我想讀直到\ r \ n所以我第一次讀到「4 \ r \ n」和那麼我想只將4存儲到ByteArrayOutPutBuffer中。然後我想要得到5如上。如何實現這個 – user2365917 2013-05-10 10:21:08

+0

在while循環中檢查是否讀取的行(不包括\ r \ n)是一個數字。 StepTNT的回答上面給出了一種方法。 – chooban 2013-05-10 10:47:04