java - 将字符串转换为 double[][] - Java

标签 java arrays string list double

自 Java doesn't have an eval() module ,我想编写自己的正则表达式来将字符串解析为 double[][],例如

[在]:

`{{1.23,8.4},{92.12,-0.57212}}`
`{{1.23,-8.4}, {-92.12,-0.57212}}`

[代码]:

 double[][] xArr;
 // Somehow read the string into something like this:
 xArr = new double[][] {{1.23,8.4},{92.12,-0.57212}};
 System.out.println(xArr[0][0] + " " + xArr[0][1]);

[输出]:

 1.23 -8.4

目前,我是这样做的:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {
        String s = "{{1.23,8.4}, {92.12,-0.57212}}";

        Pattern regex = Pattern.compile("((-)?\\d+(?:\\.\\d+)?)");
        Matcher matcher = regex.matcher(s);
        List<double[]> locations = new ArrayList<double[]>();
        int i = 0;
        while(matcher.find()){
            double d1 = Double.parseDouble(matcher.group(1));
            matcher.find();
            double d2 = Double.parseDouble(matcher.group(1));
            locations.add(new double[] {d1, d2});
            i++;        
        }; 


    }

}

有更好的方法吗?即:

  • 现在,通过知道我的 double[][] 的内部大小是 2 并且在通过 match.find() 迭代期间,代码有点作弊。它执行 2 次传递以跳到下一对,有没有办法更改正则表达式,使其一次提取 2 个组?

  • 当前它正在读入 d1d2 变量,然后创建一个新的 double[] 以添加到 List有没有办法不用创建d1d2直接做?

最佳答案

使用 jackson,但你必须用方框/括号替换大括号。

有了这个你不需要指定预期数组的维度

public static void main(String[] args) throws IOException {
    String jsonString = "{{1.23,8.4}, {92.12,-0.57212}}";
    jsonString = jsonString.replace("{", "[").replace("}", "]");
    Double[][] doubles = new ObjectMapper().readValue(jsonString, Double[][].class);
    System.out.println(Arrays.deepToString(doubles));
}

关于java - 将字符串转换为 double[][] - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38199057/

相关文章:

无能为力 : Infinite Loop in C

php - 使用PHP的JSON数组

Java 正则表达式不适用于可能值的操作数组

Java Swing,如何使用鼠标调整 JPanel 的大小?

java - Spring Boot ddl 自动生成器

c# - 具有 Oracle 数组绑定(bind)的 ExecuteReader

java - 将 string[] 拆分为 ArrayList 并返回值

Java 嵌套 for while 循环

java - 检查DataInputStream是否有内容

python - 语法无效 - 表达式返回 f-String 中的字符串