2

我有这个代码:

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

System.out.println("mess: " + message);
System.out.println("reciv: " + reciv[0]);

这个输出:

mess: E|NAME
reciv: 

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

我尝试复制“空格”,但我不能。我在想“空格”不是“空格”。

对不起我的英语不好,我是西班牙人。

4

2 回答 2

7

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

"ABC"

将在这些地方分裂(我会用 标记它们|

"|A|B|C|"

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

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

所以最后一个空白空间被删除。所以你得到结果["", "A", "B", "C"]


现在,如果你想让它变成|文字,你需要使用例如转义它

  • split("\\|")
  • split("[|]")
  • 或者split(Pattern.quote("|"))
  • 或者split("\\Q|\\E")
于 2013-10-20T15:07:42.560 回答
2

你可以这样做

String message = receiveMessage();
message  = message.replaceAll("[\n\r\\s]", "");
String[] str1 = message.split("[|]");
for (int i = 0; i < str1.length; i++) {
    System.out.println(str1[i]);
}
于 2013-10-20T15:16:17.203 回答