Java .split(";&124quot;)不&&x27;t返回正确的字符串

Java .split(";&124quot;)不&&x27;t返回正确的字符串,java,Java,我正在将此字符串从客户端发送到服务器: Ar|0.04107356|-0.31299785|-0.9991561 该字符串是由服务器打印出来的,因此是正确的 “Ar”是数据包的名称,值是弓箭手要射出的箭的速度 为了得到这些值,我使用 String[] values = str.split("|"); 然后 a.shoot(Float.valueOf(values[1]), Float.valueOf(values[2]), Float.valueOf(values[3])); //a is

我正在将此字符串从客户端发送到服务器:

Ar|0.04107356|-0.31299785|-0.9991561
该字符串是由服务器打印出来的,因此是正确的

“Ar”是数据包的名称,值是弓箭手要射出的箭的速度

为了得到这些值,我使用

String[] values = str.split("|");
然后

a.shoot(Float.valueOf(values[1]), Float.valueOf(values[2]), Float.valueOf(values[3])); //a is an archer
问题是,值、值[2]和值[3]似乎已损坏或无法识别

我的完整代码如下:

 public void handleMessage(String str){
    System.out.println(str);
    String[] values = str.split("|");
    if (values[0].contains("Ar")){
        System.out.println("X: " + values[1] + " Y: " + values[2] + " Z: " + values[3]);
    }
    System.out.println("Vals: " + values[0] + " " + values[1] + " " + values[2] + " " + values[3]);
    if (true) return; //Returning so I can analyze de-bug messages without crashes.
    for (Archer a : GameServer.archers){
        a.shoot(Float.valueOf(values[1]), Float.valueOf(values[2]), Float.valueOf(values[3]));
    }
当我打印“VAL”消息时,结果如下:

Vals:  A r |


这里出了什么问题?

在Java正则表达式中,水平条有一个特殊的含义,您必须将其转义才能用作文本:

String[] values = str.split("\\|");

您正在使用的哪个IDE没有警告您有关正则表达式的信息?很多IDE没有警告您,但您应该精通文档。@JaredBurrows我使用Eclipse。@MalikBrahimi是的,谢谢Joehot200。您介意标记作为答案吗?