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

时间:2016-08-07 06:12:35

标签: java escaping

用户输入\n\t\r等值

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

\\n\\t\\r

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

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

如果用户输入某个unicode字符\u1010怎么办?

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用StringEscapeUtils

unescapeJava方法
  

<强> unescapeJava

     

public static String unescapeJava(String str)
   Unescapes在String中找到的任何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已存储为变量hello\\nworld中的userInput