java - 在 Java 中拆分和裁剪字符串数组

标签 java

我对字符串有点问题。 字符串看起来像这样:

A/46\-54.67/48\-6.94/52\2.41/54\0.00/38\-0.18/34\0.06/32\-27.22 (...)

这是来自 UDP 请求的答复。 请求就像: R/46/48(...)/32(...) ,这意味着:给我#46,#48 ...的值 答案如上所示。

目标:

最后,我只希望每个请求的字符串中的特定值作为 double 值。

我最喜欢的是带有 3(或 2)个参数的类。 第一个参数将是字符串本身,第二个参数将是字符串内的位置(如 46\之后的值)。并且,如果需要,第三个用于值的末尾,例如/。它返回一个包含值的数组。

(对我来说不是真正的解决方案:我一次只能请求值,所以答案会更容易处理。问题是,如果每次必须执行更多的 UDP 请求。当前请求将是 10 次第二,最终它会更频繁。我必须用这些值来计算)

问题:

字符串不一致。 返回的值可以有不同的数字,可以签名也可以不签名。 一致的只有:A/46\(digit for value 46)/48\(digit)/52\(digit)/54\(digit)/38\_/34\_/32\_ 可以看到,Value在“\/”之间。 我得到了一个将值削减到特定位置的“解决方案”。但是当数字改变时它失败了。

解决方案?

(是的,我是一个真正的Java新手) 我的尝试给了我一个看起来像这样的数组:

A/46

-54.67/48

-6.94/52

2.41/54

0.00/38

-0.18/34

0.06/32

-27.22

所以,现在我不知道如何从值中取出最后一部分,将它们转换成 double (数组)。

我希望我已经生动地描述了我的问题。

感谢您的意见和建议。

最佳答案

/开始拆分;你会得到一个字符串数组,如下所示:

[ "A", "46\\-54.67", ... ]

忘记第一个元素;然后,对于每个其他元素,执行:

Double.parseDouble(theElement.subString(theElement.indexOf('\\')))

这会让你得到你想要的double;您剩下要做的就是将这些 double 放在您想要的地方。

另一种解决方案是使用此正则表达式循环遍历字符串:

(\d+)\\(-?\d+\.\d+)

正则表达式的第一组捕获整数,第二组捕获 double :

final Pattern p = Pattern.compile("(\\d+)\\\\(-?\\d+\\.\\d+)");

final Matcher m = p.matcher(resultString);

while (m.find())
     // deal with m.group(1), m.group(2)

关于java - 在 Java 中拆分和裁剪字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552580/

相关文章:

java - 多对多查询 查找所有含有 XX 成分的 "recipes"

java - 模拟 : mock method call with parameters by reflection

java - 当我将限制设置为 1 时,Solr 如何知道要返回哪一行?

Java 泛型,创建 Class<T> 的实例

java - Spring Pageable 多列排序 + AWS API Gateway

java - 使用 JDBC 在 MySQL DB 中加载数据的最佳方法

java - 从 Java 访问 gradle 资源

java - 仅在 Catch block 中编写记录代码而不处理行为会对程序性能产生什么样的影响?

Java foreach 循环中的微妙之处

java - 对象 ='statutProduits' 验证失败。错误计数 : 2