繁体   English   中英

Java将浮点字符串解析为float数组?

[英]Java parsing a string of floats to a float array?

有一种简单的方法可以将一串浮点数解析为浮点数组吗? 我正在编写一个导入器,需要解析ascii文件以获取一些值,我只是想知道是否有更简单的方法来执行此操作然后自己搜索所有空白并为每个空格使用Float.parseFloat(s) - 分离价值。

例如,字符串是

1 0 4 0 26 110.78649609798859 39 249.34908705094128 47 303.06802752888359

我想创建一个浮点数组:

[1, 0, 4, 0, 26, 110.78649609798859, 39, 249.34908705094128, 47, 303.06802752888359]

谢谢您的帮助!

使用扫描仪[ API ]

使用Scanner#hasNextFloatScanner#nextFloat方法循环并获取所有浮点数并将它们构建为数组。

你可以这样做

拆分字符串

String [] split(String regex)围绕给定正则表达式的匹配拆分此字符串。

String[] tabOfFloatString = bigStringWithAllFloats.split(regex);

正则表达式可以是空格,制表符,逗号等等(正则表达式的优点是你可以组合所有你想要的,我在我的xml阅读器中使用它“[ - +。,:;]”); 然后循环并转换为浮点数

for(String s : tabOfFloatString){
    float res = Float.parseFloat(s);
    //do whatever you want with the float
}

如果你只想要一个float数组,那么简单的方法是拆分字符串:

String[] flostr = myString.split(" ");
float[] floats = new float[flostr.length];

然后迭代字符串数组,并解析单个浮点值。

或者,您可以使用Scanner或StringTokenizer,将所有值放入List并在末尾创建一个数组。

这是一个番石榴解决方案,但我很惊讶它显然需要多么复杂。 也许有人可以给我一个如何缩短它的提示:

public static float[] extractFloats(final String input){
    // check for null Strings
    Preconditions.checkNotNull(input);
    return Floats.toArray(Lists.transform(
        Lists.newArrayList(Splitter.on(Pattern.compile("\\s+")).split(
            input.trim())), new Function<String, Float>(){

            @Override
            public Float apply(final String input){
                return Float.valueOf(input);
            }
        }));
}

测试代码:

String param =
    "1 0 4 0 26 110.78649609798859 39 249.34908705094128 47 303.06802752888359";
float[] floats = extractFloats(param);
System.out.println(Arrays.toString(floats));

输出:

[1.0,0.0,4.0,0.0,26.0,110.7865,39.0,249.34909,47.0,303.06802]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM