7

次のような形式のテキストファイルを読んでいます

word
definiton

word
definition
definition

word
definition

ですから、私はそれらの空の線にいつ到達するかに基づいて、私が定義にあるかどうかを試してみる必要があります。物事は、文字BufferedReaderを破棄\nし、どういうわけかその空の行をString ""私が思ったように登録されていません。どうすればこれを行うことができますか。

4

5 に答える 5

20
  1. 必ず使用してください:("".equals(myString)これはnull-safeです)ではありませんmyString == ""
    • myString.isEmpty()1.6以降では、 (安全ではないnull)を使用できます
  2. myString.trim()上記のチェックの前に余分な空白を取り除くために使用できます

ここにいくつかのコードがあります:

public void readFile(BufferedReader br) {
  boolean inDefinition = false;
  while(br.ready()) {
    String next = br.readLine().trim();
    if(next.isEmpty()) {
      inDefinition = false;
      continue;
    }
    if(!inDefinition) {
      handleWord(next);
      inDefinition = true;
    } else {
      handleDefinition(next);
    }
  }
}
于 2012-12-04T15:41:12.923 に答える
6

行が空のBufferedReader.readLine()場合、は空の文字列を返します。

javadocによると:

戻り値:行末文字を含まない行の内容を含む文字列、またはストリームの終わりに達した場合はnull。

空の文字列が表示されていない場合は、行が空でないか、空の文字列を正しくテストしていません。

于 2012-12-04T15:41:46.440 に答える
2
line = reader.readLine();
if ("".equals(line)) {
   //this is and empty line...
}

文字列が空であることをどのように確認したのかわかりません。そのため、文字列が機能しなかった理由を説明できません。おそらく==比較のために使用しましたか?この場合==、オブジェクトのコンテンツではなく参照を比較するため、機能しませんでした。

于 2012-12-04T15:41:57.007 に答える
1

このコードスニペットは空の行をスキップし、コンテンツを含む行のみを出力します。

    String line = null;
    while ((line = br.readLine()) != null) {
        if (line.trim().equals("")) {
            // empty line
        } else {
            System.out.println(line);
        }
    }

空白文字のみを含む行もスキップされます。

于 2012-12-04T15:43:29.433 に答える
-1
try (BufferedReader originReader = getReader("now")) {
    if (StringUtils.isEmpty(originReader.readLine())) {
        System.out.printline("Buffer is empty");
    }
于 2016-05-03T05:27:05.003 に答える