1

我试图将找到的所有匹配项包含在一个文本文档中,过去 3 个小时我一直在我的桌子上敲打我的头,并认为是时候寻求帮助了。

我目前的问题是,List<String>我不确定是因为输入的信息错误还是我的文件打印方法。它不会打印到文件和使用其他打印方式,例如writer.println(returnvalue),即使那样,它仍然只显示一个匹配项,而不是全部,我确实在控制台中显示了匹配项,只是为了确保它们正在显示并且它们是。

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 回答