小编典典

在新的文本文件中打印替换的行

java

我正在尝试编辑matlabfile并替换某些特定行中的一些编码部分init。但是,使用下面的格式进行更改将完全不会更改行上下文。(它将打印相同的旧行)。知道我在做什么错吗?’replaceAll’不适合用其他词替换某些词吗?

提前致谢。

try {
    PrintWriter out = new PrintWriter(new FileWriter(filenew, true));
    Scanner scanner = new Scanner(file);

    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();

        if (line.contains("stream.Values(strmatch('Test',stream.Components,'exact'))") {  
            String newline = line.replaceAll("stream.Values(strmatch('Test',stream.Components,'exact'))", "New Data");

            out.println(newline);
            System.out.println(newline);
        } else {
            out.write(line);
            out.write("\n");
        }
    }     // while loop

    out.flush();
    out.close();
    scanner.close();



} catch (IOException e)  {
    e.printStackTrace();
}

阅读 240

收藏
2020-11-30

共1个答案

小编典典

replaceAll方法在String将正则表达式作为参数,并在正则表达式的一些字符有特殊的含义,比如在你的表达括号。

只需改用replace采用文字字符串的方法即可:

String newline = line.replace("stream.Values(strmatch('Test',stream.Components,'exact'))", "New Data");

不要被方法的名称相混淆-
之间的差别replace,并replaceAll没有在他们多少次更换,但不同的是在第一个就是文字字符串,第二个需要一个正则表达式。在Javadoc中:

用指定的文字替换序列替换该字符串中与文字目标序列匹配的 每个子 字符串。

public String replace(CharSequence target, CharSequence replacement) {
2020-11-30