5

javadoc から

public String readLine()
            throws IOException

Read a line of text. A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed. 

私は次の種類のテキストを持っています:

Now the earth was formless and empty.  Darkness was on the surface
of the deep.  God's Spirit was hovering over the surface
of the waters.

私は次のように行を読んでいます:

 while(buffer.readline() != null){
       }

しかし、問題は、改行の前までの文字列の行を考慮していることです。しかし、文字列が で終わる行を考慮したいと思います.。どうすればいいですか?

4

4 に答える 4

7

を使用してScanner、独自の区切り文字を設定できますuseDelimiter(Pattern)

入力区切り文字はregexであるため、正規表現を提供する必要があることに注意してください\.(正規表現の文字の特別な意味を壊す必要があります.)。

于 2012-04-29T17:28:41.817 に答える
5

一度に 1 文字ずつ読み取り、データを StringBuilder にコピーできます

Reader reader = ...;
StringBuilder sb = new StringBuilder();
int ch;
while((ch = reader.read()) >= 0) {
    if(ch == '.') break;
    sb.append((char) ch);
}
于 2012-04-29T17:25:13.003 に答える
4
  • バッファ付きリーダーの代わりに aを使用しjava.util.Scanner、区切り文字を"\\."withに設定しScanner.useDelimiter()ます。(ただし、区切り文字は消費されるので、再度追加する必要があることに注意してください!)
  • または生の文字列を読み取り、それぞれに分割します.
于 2012-04-29T17:28:08.903 に答える
4

テキスト全体を次のように分割できます.

String text = "Your test.";
String[] lines = text.split("\\.");

テキストを分割すると、行の配列が得られます。さらに制御が必要な場合は、正規表現を使用することもできます。たとえば、テキストを:またはで分割することもできます;。グーグルで検索してください。

PS .: おそらく、次のような方法で最初に改行文字を削除する必要があります。

text = text.replaceAll("\n", "");
于 2012-04-29T17:28:41.367 に答える