Java拆分错误

mlo*_*omb 2 java split

我有这个代码:

String message = receiveMessage();
String[] reciv = message.split("|");

System.out.println("mess: " + message);
System.out.println("reciv: " + reciv[0]);
Run Code Online (Sandbox Code Playgroud)

而这个输出:

mess: E|NAME
reciv: 
Run Code Online (Sandbox Code Playgroud)

我看起来很奇怪,E|NAMEE|NAME*space**space**space**space**space**space**space*......

我试图复制"空间",但我不能.我认为"空间"不是"空间".

抱歉我的英语不好,我是西班牙语.

Psh*_*emo 7

split使用正则表达式并且在正则表达式中|具有特殊含义,即OR "|"表示空字符串""或空字符串"".拆分空字符串意味着

"ABC"
Run Code Online (Sandbox Code Playgroud)

会在这些地方分开(我会用它们标记|)

"|A|B|C|"
Run Code Online (Sandbox Code Playgroud)

["", "A", "B", "C", ""]正如split文档所说,生成数组

因此,结尾的空字符串不包含在结果数组中

所以删除最后一个空格.所以你得到了结果["", "A", "B", "C"]


现在,如果你想让它成为|文字,你需要使用它来逃避它

  • split("\\|")
  • split("[|]").
  • 要么 split(Pattern.quote("|"))
  • 要么 split("\\Q|\\E")