Java 如何解释转义字符的用户输入?

Java 如何解释转义字符的用户输入?,java,escaping,Java,Escaping,用户输入一个值,如\n,\t,\r等 Java当然会用反斜杠转义上述字符。因此,应用程序在缓冲区中有以下字符串 \\n,\\t,\\r 现在如何将这些字符串转换回\n,\t,\r 我可以写一个switch语句。但是有无限的选择 如果用户输入一些unicode字符怎么办 这不起作用userInput.replaceAll(“\\\\”,“\\”) 如何解释转义字符的用户输入?您可以使用 unescapeJava 公共静态字符串unescapeJava(字符串str) 取消扫描字符串中找到的任何Ja

用户输入一个值,如
\n
\t
\r

Java当然会用反斜杠转义上述字符。因此,应用程序在缓冲区中有以下字符串

\\n
\\t
\\r

现在如何将这些字符串转换回
\n
\t
\r

我可以写一个
switch
语句。但是有无限的选择

如果用户输入一些unicode字符怎么办

这不起作用
userInput.replaceAll(“\\\\”,“\\”)


如何解释转义字符的用户输入?

您可以使用

unescapeJava

公共静态字符串unescapeJava(字符串str)
取消扫描字符串中找到的任何Java文本。例如,它会将“\”和“n”序列转换为换行符,除非 “\”前面有另一个“\”

参数:str-unescape的字符串可能为空
返回:一个新的未转换字符串,如果字符串输入为null,则返回null


但是,如果您不想将这些转义字符转换为它们的实际含义(如将
\n
转换为新行),那么实际上就不需要取消转义字符。Java只会转义这些字符以将它们存储在变量中。若您计划将其输出给用户,那个么java将自动取消它的显示

考虑一下这个代码

import java.util.Scanner;  

public class Adding {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);  

        System.out.print("Please enter something : ");
        String userInput = sc.nextLine();

        System.out.println("You Entered : " + userInput);

    }
}
控制台

Please enter something : hello\nworld
You Entered : hello\nworld

在上面的示例中,
hello\nworld
被存储为变量
userInput

中的
hello\\nworld
,非常感谢您的详细解释