чтение одной строки, разделенной запятыми и пробелом-java
Я готов прочитать ряд чисел из одной строки, как показано ниже в Java:
1 80,982 163,8164 170,2620
Поэтому в конечном итоге я хочу получить результирующий массив [1, 80, 982, 163, 8164, 170, 2620]
Я думаю об использовании сканера, но не ясно, как реализовать его аккуратным способом, могу я попросить несколько советов, пожалуйста?
Спасибо за чтение!
8 ответов:
Да класс сканера хорошо работает с этим.
public static void main(String[] args) throws Exception { Scanner s = new Scanner(strOrFile).useDelimiter(",| "); List<Integer> myList = new ArrayList<Integer>(); while (s.hasNext()) { myList.add(s.nextInt()); } }
Это особенно хорошо работает, если Вы читаете из файла. (Сокращает работу для вас.)
Если бы это был я, я бы прочитал одну строку с помощью
BufferedReader
, а затем просто использовалString[] values = line.split("[, ]");
Я обычно нахожу
Scanner
неопрятным и излишним.
Сканер в порядке, просто установите нужный шаблон разделителя, смотрите это .
Попробуйте это:
public static void main(String[] args) { String str = "1 80,982 163,8164 170,2620"; String[] s = str.split(" |,"); for(String ss:s) System.out.println(ss); }
Разделите строку с помощью приведенного ниже регулярного выражения.
String input = "1 80,982 163,8164 170,2620 "; String[] values = input.split("\\s*(,|\\s)\\s*"); for(String val: values) { System.out.println(val); }
I соответствует следующим критериям.
- ноль или больше пробелов
(,|\\s)
. Если у вас есть более одного разделителя, вы можете включить его в скобку, например(&|,|@|\\s)
.- запятая и Пробел.
Проверьте скрипку здесь.
String ss = "1 80,982 163,8164 170,2620"; ss = ss.replaceAll(" ", ","); String arr[] = ss.split(","); for (int i=0;i<arr.length;i++) { System.out.println("line "+arr[i]); }
Для простого входного файла с некоторыми запятыми, пробелами и запятыми с пробелами, то регулярное выражение Rais и Евгения работали с split. В последнем случае знак + имеет решающее значение. Ни один из других вариантов не работал для этих данных: 1.0 2.0 3.0 4.0 5.0, 6.0 7.0 8.0 9.0 10.0, 11.0 12.0