Я разрабатываю программу, которая берет .txt, извлекает из него числа и помещает их в массив для дальнейшего анализа. Вот что у меня есть, где строка - это строка, которая входит в
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, но я не уверен, как.
Есть идеи?
Используйте Сканер , чтобы сделать работу за вас.
import java.util.Scanner; Scanner s = new Scanner(myInputString); s.useDelimiter(","); List<Double> doubles = new ArrayList<Double>(); while( s.hasNextDouble() ) { doubles.add(s.nextDouble()) }
Вы можете настроить то, что передается, чтобы использовать Delimiter для соответствия вашим потребностям.
Используйте класс Apache commons lang StringUtil .Проверьте метод разделения.
Например:
stringArray = line.split("[^0-9.+Ee-]+");
будет разбиваться на любой набор символов, который не является 0,1,2,3,4,5,6,7,8,9, '.', '+ ',' E ',' e 'или' - '- все символы, которые могут появляться в двойном числе.
Вы можете пройти строковый символ с помощью символа, получая только цифры и точки, а затем использовать line.spit() в очищенной строке.Я думаю, что это будет быстрее, чем регулярное выражение, когда вы анализируете много данных.
line.spit()