用户输入\n
,\t
,\r
等值
Java当然用反斜杠转义上面的字符。因此,应用程序在缓冲区中具有以下字符串
\\n
,\\t
,\\r
现在如何将这些字符串转换回\n
,\t
,\r
我可以写一个switch
语句。但是有无限数量的选项
如果用户输入某个unicode字符\u1010
怎么办?
这不起作用userInput.replaceAll("\\\\", "\\")
如何解释转义字符的用户输入?
答案 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
。