Java拆分错误

时间:2013-10-20 15:05:45

标签: java split

我有这段代码:

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* ...

我尝试复制“空格”,但我不能。我认为“空间”不是“空间”。

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

2 个答案:

答案 0 :(得分:7)

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

"ABC"

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

"|A|B|C|"

生成数组["", "A", "B", "C", ""],但split documentation表示

  

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

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


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

来逃避它
  • split("\\|")
  • split("[|]")
  • split(Pattern.quote("|"))
  • split("\\Q|\\E")

答案 1 :(得分: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]);
}