我有这个代码:
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|NAME是E|NAME*space**space**space**space**space**space**space*......
我试图复制"空间",但我不能.我认为"空间"不是"空间".
抱歉我的英语不好,我是西班牙语.
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")