我正在开发一个程序,它接受一个.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部分,但我不确定如何。
有什么想法吗?
答案 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的内容以满足您的需求。