Вытащить из строки числовые слова
Нужно выбрать из строки только числовые слова. Есть строка "45ggkjk 345 4g g7 43". И из неё нужно перенести в массив только 345 и 43. Первое, что пришло в голову, сделать с помощью regex, что-то вроде такого "\s\d+". Но логично, что это не работает как нужно.
Ответы (1 шт):
Автор решения: Alex Rudenko
→ Ссылка
Для выбора слов следует использовать границу слова \b:
String s = "45ggkjk 345 4g g7 43";
Pattern.compile("\\b\\d+\\b").matcher(s)
.results() // Stream<MatchResult>
.map(MatchResult::group) // Stream<String> подходящие числовые слова
.forEach(System.out::println);
Результат:
345
43
Вместо Stream::forEach можно собрать результаты в список
.collect(Collectors.toList());
или преобразовать в массив:
.toArray(String[]::new);