【问题标题】:Replacing an exact character in a string out of a file? [duplicate]从文件中替换字符串中的确切字符? [复制]
【发布时间】:2020-06-04 17:45:05
【问题描述】:

我正在制作一个修复 csv 文件中分隔符的程序,我的想法是读取所有行,然后检查每一行是否有错误的分隔符,然后用好的分隔符替换它。我一直在尝试多种事情,但这就是我现在陷入困境的地方。这是代码:

try (FileWriter escritor = new FileWriter(archivoRes.getAbsoluteFile()); BufferedReader lectorArchivo = new BufferedReader(new FileReader(archivoSelec)); BufferedWriter bfw = new BufferedWriter(escritor)) {

    byte[] byteArray = new byte[(int) archivoSelec.length()];
    FileInputStream fis = new FileInputStream(archivoSelec);
    fis.read(byteArray);

    int count = 1;
    for (int i = byteArray.length; i >= 0; i--) {
        String line = lectorArchivo.readLine();
        if (line.indexOf(":") == 82 || line.indexOf(":") == 68 || line.indexOf(":") == 81) {
            line.replaceFirst(":", ";");

        }
        bfw.write(line);
        bfw.newLine();
    }


    bfw.close();

} catch (IOException e) {
    System.err.format("IOException: %s%n", e);
}

关于如何解决这个问题的任何想法?

更新:

我发现了 StringTokenizer,它看起来更简单,但我仍然无法让它工作。这是目前的代码。

for(int i = byteArray.length;i >= 0;i--){
                    String line = lectorArchivo.readLine();
                    StringTokenizer token = new StringTokenizer(line, ";");

                    if (token.countTokens() == 3) {
                        line.replaceAll(separador_old, separador);


                    }
                    bfw.write(line);
                    bfw.newLine();

                }


                bfw.close();

【问题讨论】:

  • 但是有什么问题呢?你的代码有效吗?它会产生一些错误吗?预期产出与实际产出是多少?
  • 完整代码有效,它读取原始文件并将其重写为我想要的文件,但分隔符保持不变。
  • if (line.indexOf(":") == 82 || line.indexOf(":") == 68 || line.indexOf(":") == 81) 应该做什么?是否仅当 : 出现在这些特定索引处时才替换它?
  • 所以代码有效,但实际上并没有,我现在明白了。
  • 你试过调试代码吗?

标签: java string file for-loop


【解决方案1】:

字符串是不可变的。

line.replaceFirst(":", ";"); 什么都不做。

您需要在某处分配结果。

也许回line

【讨论】:

  • 只是做了,没有改变任何东西。虽然感谢您的提示。
  • line = line.replaceAll(separador_old, separador);替换line.replaceAll(separador_old, separador);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2015-10-20
  • 2015-06-06
  • 2014-12-11
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多