处理特殊字符:'\n'、'\\n '、'\t'和'\\t'在阅读java中的文件时

u59ebvdq  于 2022-10-29  发布在  Java
关注(0)|答案(2)|浏览(287)

我有一个名为myfile的文本文件,其中有一行文本,包含一些特殊字符\n(换行字符)或一些转义的字符\\n
myfile内容:

thiss is\n a string\\n bla bla

我想读取此文件,但保留这些特殊字符的语义。
我试图在没有任何特殊工作的情况下读取该文件,但所有这些特殊字符都被解释为原始字符串。

public class Main {
    public static void main(String[] args) {

        String path = Main.class.getResource("/myfile").getPath();
        try (BufferedReader in = new BufferedReader( new FileReader(path))) {
            String line = in.readLine();
            System.out.println(line); // printed as a raw string, `\n` not interpreted as a new line char
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

我也尝试过使用String.replace()方法,但它只适用于\n,而不适用于\\n

line.replace("\\n", "\n");
hc2pp10m

hc2pp10m1#

试试这个。

public static void main(String[] args) throws IOException {
    String in = "thiss is\\n a st\\tring\\\\n bla bla";
    String out = in
        .replaceAll("(?<!\\\\)\\\\n", "\n")
        .replaceAll("(?<!\\\\)\\\\t", "\t")
        .replaceAll("\\\\\\\\", "\\\\");
    System.out.println("in  : " + in);
    System.out.println("out : " + out);
}

输出:

in  : thiss is\n a st\tring\\n bla bla
out : thiss is
 a st   ring\n bla bla
7xllpg7q

7xllpg7q2#

您实际上可以:

line = line.replace("\\\\n", "\n");
line = line.replace("\\n", "\n");

按此顺序排列。

相关问题