1

見つかったすべての一致をテキスト ドキュメントに含めようとしています。過去 3 時間、机に頭をぶつけていて、助けを求める時が来たと思いました。

現在の問題は にあり、List<String>入力した情報が間違っているためなのか、ファイルの印刷方法によるものなのかわかりません。それはファイルに出力されず、そのような他の印刷手段でwriter.println(returnvalue)も、すべてではなく1つの一致のみが表示されます.表示されていることを確認するためだけに一致がコンソールに表示されます。

Edit2:申し訳ありませんが、これはstackoverflowに関する私の最初の質問になります。私の質問は、リスト配列からすべてのデータをテキストファイルにどのように出力しますか?

Edit3:私の最新の問題は、すべての一致を印刷することです。現在、最後の一致を印刷するのに行き詰まっています。アドバイスはありますか?

public static void RegexChecker(String TheRegex, String line){
  String Result= "";
  List<String> returnvalue = new ArrayList<String>();
  Pattern checkRegex = Pattern.compile(TheRegex);
  Matcher regexMatcher = checkRegex.matcher(line);
  int count = 0 ;

  FileWriter writer = null;
  try {
    writer = new FileWriter("output.txt");
  } catch (IOException e1) {
    e1.printStackTrace();
  } 

  while ( regexMatcher.find() ){
    if (regexMatcher.group().length() != 0){
      returnvalue.add(regexMatcher.group());
      System.out.println( regexMatcher.group().trim() );
    }

    for(String str: returnvalue) {
      try {
        out.write(String.valueOf(returnvalue.get(i)));
        writer.write(str);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

  }
}
4

1 に答える 1

2

からfor抜け出しwhileます。すべての一致がリストに追加された後でのみ、ファイルに書き込みます。for-eachブロックにもいくつかの変更が必要です。

for-eachコンストラクトは、コレクションの反復からの値を提供します。インデックスを使用して値を再度取得する必要はありません。

これを試して:

while (regexMatcher.find()) {
    if (regexMatcher.group().length() != 0) {
        returnvalue.add(regexMatcher.group());
        System.out.println(regexMatcher.group().trim());
    }
}
try {
    for (String str : returnvalue) {
        writer.write(str + "\n");
    }
    writer.flush();
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
}
于 2013-03-04T00:36:18.237 に答える