当前位置: 首页 > 知识库问答 >
问题:

.split(“”)不返回正确的字符串[重复]

尚景焕
2023-03-14

我将这个字符串从客户端发送到服务器:

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
 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]));
    }
Vals:  A r |

这里出什么问题了?

共有1个答案

拓拔弘扬
2023-03-14

水平条在Java正则表达式中有特殊的含义,必须转义才能用作文字:

String[] values = str.split("\\|");
 类似资料:
  • 问题内容: 我正在使用接受json响应的jquery ajax调用: 在我的php后端函数中,我在一个简单的数组上使用json_encode,如下所示: 但是 alert(msg.hello) 为我返回 未定义 。这是怎么了?另外,在我的 console.log中, 我能够得到如下输出: 问题答案: 使用的返回数据:

  • 在我的CentOS7工作站上,我有elasticsearch(ver.5.5.1)服务,按映像:docker.elastic.co/elasticsearch/elasticsearch:5.5.1。 我的工作站上的文件系统类型是XFS。 我有.tar存档文件/usr/share/elasticsearch/data/nodes/0/包含索引结构:(来自kibana的JSON) 开始记录我的JVM

  • 我有以下字符串 decrypted_my_content_456974543290983824.csv 并且我想要一个简单的正则表达式来获取decrypted和last_之间的字符串,这意味着我想要返回my_content。 我的正则表达式如下 在不同的在线工具(如regex101)中进行了测试,结果我得到了我想要的东西。但是,在代码中 它不起作用的原因--我想我错过了一些转义字符还是?此外,如果

  • 我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用