Java を使用して、区切り文字 CRLF(\r\n) を持つ各行で段落を読み取るにはどうすればよいですか。例えば
4\r\n この\r\n 8\r\n 応答\r\n
4 を抽出してバッファに格納し、8 を読み取ってこの段落に格納します。私を助けてください。
どのような出力が必要かはよくわかりませんが、BufferedReaderクラスを使用すると、テキスト ファイルを 1 行ずつ読み取ることができます。インターネット上で利用可能ないくつかの例があります。
readLine
メソッドは次のことを行います。
1 行のテキストを読み取ります。行は、ライン フィード ('\n')、キャリッジ リターン ('\r')、またはキャリッジ リターンの直後のラインフィードのいずれかによって終了すると見なされます。
BufferedReader.readLine()
行を読み取るだけの場合、またはScanner
数値を自動的に解析する場合に使用します。
何をしなければならないのかよくわかりませんが、テキストから文字列を取得する必要がある場合は、私の解決策に従ってください。
最善の方法ではないかもしれませんが、区切り文字として使用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);
}
これは印刷されます
4
これ
8
応答
もちろん、これは、ファイルから読み取るのではなく、完全な文字列を取得したばかりで、そこからデータを抽出する必要がある場合に便利です。
ファイルから読んでいる場合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){}
}
これで、次のように出力されます。
4
8