【问题标题】:Issue with scanner and file扫描仪和文件问题
【发布时间】:2019-09-26 21:36:45
【问题描述】:

我有一个。我要从中读取和写入的 csv 文件。如果有新的输入,它应该检查 string1 是否已经存在于文件中。 String1 可以包含数字、字符和空格。

写入文件完全没有问题,但是当它应该检查 string1 是否存在时,它仅在 string1 为 1 或 2 时才有效。但是 string1 将是一个由字符、数字和空格组成的字符串


    Scanner scanner = new Scanner(file);                   
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if(line.contains(string1)) {
            // Print some error message
        }
        else{
            // write output to .csv file
            }
    }
    scanner.close();

我尝试过更改文件的编码,但这也无济于事..

【问题讨论】:

  • "abcde".contains("bc") 有效,但您可能希望搜索字符串中的任何字符"abcde".matches(".*[ae].*")
  • 当字符串是变量时如何搜索字符串中的任何字符?
  • line.matches(".*[" + string1 + "].*"); 基本上是,但一些特殊的正则表达式字符必须额外处理:-] 等。
  • 我不是指任何字符,而是字符串本身。就像我输入 1234 时一样,如果是 123,它应该允许输入,但不是 1234 ..

标签: java java.util.scanner


【解决方案1】:

即使我在使用 Scanner 和 csv 读取时遇到了一些问题,所以我使用 BufferedReader Code 做到了:-.

    String inputFileName = "fileName";
    BufferedReader br ;
    try {
        br = new BufferedReader(new FileReader(inputFileName));
        String line = br.readLine();
    }
     catch (FileNotFoundException e) {  
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

但扫描仪也适用于 csv ,扫描仪代码:-

Scanner br;
    try {
        br = new Scanner(new FileReader(inputFileName));
        String line = br.next();
    }
     catch (FileNotFoundException e) {  
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

【讨论】:

  • 这真的没有帮助。扫描仪本身似乎可以工作,但是包含包含的过滤器会使特殊字符出现一些问题。BR 也是如此,我在几个小时前尝试过
  • 将所有读取的值添加到集合中并迭代集合并写入文件。你不会有任何重复的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2012-10-05
  • 2014-06-04
相关资源
最近更新 更多