如何从用户输入中分割出"\n"?

Kub*_*uba 5 java string split

谁能告诉我为什么这个效果很好:

String wanttosplit = "asdf...23\n..asd12";
String[] i = wanttosplit.split("\n");
output are:
i[0] = asdf...23
i[1] = ..asd12
Run Code Online (Sandbox Code Playgroud)

当我想从用户那里获取数据时:

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
String wanttosplit = scan.next(); //user enter asdf...23\n..asd12 on the       keyboard
String[] i = wanttosplit.split("\n");
output are:
i[0] = asdf...23\n..asd12
Run Code Online (Sandbox Code Playgroud)

为什么它没有像第一个例子那样分裂?

das*_*ght 6

不同之处在于\n,String文字"asdf...23\n..asd12"由Java编译器处理,而用户输入asdf...23\n..asd12则按Scanner原样传递.

Java编译器用\n换行符(LF)替换转义序列,该字符对应于UNICODE中的代码点10.Scanner,在另一方面,你传递两个单独的字符,'\''n',所以当你将这个字符串传递split方法,它没有找到LF代码点分隔符.

您需要自己处理转义序列\n,例如,通过传递split识别它的正则表达式:

String[] i = wanttosplit.split("(?<!\\\\)\\\\n");
Run Code Online (Sandbox Code Playgroud)

演示.