How to extract numbers from a string and get an array of ints?
Как извлечь числа из строки и получить массив целых чисел?
У меня есть строковая переменная (в основном английское предложение с неопределенным количеством чисел), и я хотел бы извлечь все числа в массив целых чисел. Мне было интересно, есть ли быстрое решение с регулярными выражениями?
Patternp= Pattern.compile("\\d+"); Matcherm= p.matcher(line); while (m.find()) { numbers.add(m.group()); }
Переведено автоматически
Ответ 1
Patternp= Pattern.compile("-?\\d+"); Matcherm= p.matcher("There are more than -2 and less than 12 numbers here"); while (m.find()) { System.out.println(m.group()); }
... печатает -2 и 12.
-? соответствует начальному отрицательному знаку - необязательно. \d соответствует цифре, и нам нужно написать \ как \\ в строке Java, хотя. Итак, \d+ соответствует 1 или более цифрам.
Ответ 2
Как насчет использования replaceAll java.lang.Строковый метод:
[ и ] определяет набор символов, которые должны совпадать по одному разу, т. Е. Только один раз в любом порядке
^ Специальный идентификатор, используемый в начале набора, используемый для указания соответствия всем символам, не присутствующим в наборе с разделителями, вместо всех символов, присутствующих в наборе.
+ От одного до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости
-? Один из символов “-" и “"?”
0-9 Символ в диапазоне от “0” до “9”
Ответ 3
Patternp= Pattern.compile("[0-9]+"); Matcherm= p.matcher(myString); while (m.find()) { intn= Integer.parseInt(m.group()); // append n to list } // convert list to array, etc
На самом деле вы можете заменить [0-9] на \d, но это требует экранирования двойной обратной косой черты, что затрудняет чтение.