提高解析的多功能性 - Java

时间:2011-03-31 20:54:03

标签: java arrays parsing

我正在开发一个程序,它接受一个.txt,从中检索数字,并将它们放入一个数组中进行进一步分析。这就是我所拥有的,其中'line'是字符串 -

stringArray = line.split(" ");

                doubleArray = new double[stringArray.length];
                    for(int i=0; i<stringArray.length; i++)
                        {
                           doubleArray[i] = Double.parseDouble(stringArray[i]);
                        }

如果字符串类似于“6.5 8 2 4.3 1 67”,则此方法有效。 但是,我试图让它过滤掉逗号,多个空格和其他字母。我认为这只是修改.split部分,但我不确定如何。

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

您可以通过char检索只有数字和点的行char,然后在纯化的字符串上使用line.spit()。我认为当你分析大量数据时,这比regexp更快。

答案 1 :(得分:0)

使用Apache commons lang StringUtil课程。 查看拆分方法。

答案 2 :(得分:0)

例如:

stringArray = line.split("[^0-9.+Ee-]+");

将拆分任何不是0,1,2,3,4,5,6,7,8,9,'。','+','E','e'或'的字符集 - ' - 所有可以出现在双精灵中的角色。

答案 3 :(得分:0)

使用Scanner为您完成工作。

import java.util.Scanner;

Scanner s = new Scanner(myInputString);
s.useDelimiter(",");
List<Double> doubles = new ArrayList<Double>();
while( s.hasNextDouble() ) {
    doubles.add(s.nextDouble())
}

您可以调整传递给useDelimiter的内容以满足您的需求。