按新行符号拆分字符串

bar*_*nus 1 java string split newline

我试图在这个文件eng-pol.txt中用新的符号"\n" 分割线条而且它根本不起作用......我试过了:

String[] words = strLine.split("\n");
System.out.println(Arrays.toString(words));
[abbot    abbot [?æb?t] <N>\n opat]

String[] words = strLine.split("\\n");
System.out.println(Arrays.toString(words));
[abbot    abbot [?æb?t] <N>\n opat]

String[] words = strLine.split("\\r|\r");
System.out.println(Arrays.toString(words));
[abbot    abbot [?æb?t] <N>\n opat]
Run Code Online (Sandbox Code Playgroud)

即使这样:

String[] words = strLine.split(System.getProperty("line.separator"));
System.out.println(Arrays.toString(words));
[abbot    abbot [?æb?t] <N>\n opat]
Run Code Online (Sandbox Code Playgroud)

我正在使用BufferedReaderreadLine方法读取文件.

Psh*_*emo 8

我不确定我是否理解正确,但我发现你的文件包含\n文字(不是实际的换行符).如果你想拆分它们,那么你需要写分割为

split("\\\\n")
Run Code Online (Sandbox Code Playgroud)

表示\文字的正则表达式\\(它需要被转义,否则单个\将被视为预定义字符类的开头,如\d表示数字).

但是代表这种正则表达式的String \\需要写成,"\\\\"因为在字符串\中也是特殊的,它也需要被转义.

总之,\与正则表达式匹配,你需要在两个级别中逃避:

  • 在正则表达式 \\
  • 在String中"\\\\".

  • @Pshemo如果你有时间可以解释为什么这有效吗? (2认同)