Работа с числовыми значениями в строке

186
28 февраля 2017, 15:51

К примеру имеется строка - " Купил 10 бананов потратил 5 рублей". Строка может изменять количество слов, само число, но количество цифровых значений всегда одинакова.

Как внести по отдельности все цифровые значения из строки в массив?

Подскажите как решить.

Answer 1

Поиск групп цифр в строке и их добавление в список:

String str = "abc 10 def ghi 5 jkl";
Pattern pattern = Pattern.compile("(\\d+)");
Matcher matcher = pattern.matcher(str);
List<String> matches = new ArrayList<>();
while (matcher.find())
{
    matches.add(matcher.group(1));
}
Answer 2

Я далек от Java, но разве нельзя итерировать строку и проверять, не является ли символ числовым? Если является — в массив (или в более подходящую для задачи структуру)

Answer 3

Вы можете воспользоваться регулярными выражениями. Объявить шаблон, который ищет числовые группы, применить его ко входной строке и потом пройти по всем группам. Примерно так:

String line = "Купил 10 бананов потратил 5 рублей";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
    //Здесь matcher.group(0) -- это будет найденное число в строковом виде
    System.out.println("Found: " + matcher.group(0));
}

Код выше должен вывести:

Found: 10
Found: 5

Подробнее о регулярных выражениях написано здесь, похожий вопрос, только со словами вот тут

READ ALSO
Не могу получить значение из базы данных

Не могу получить значение из базы данных

ЗдравствуйтеЕсть бд в которой лежат записи адресов сайтов, паролей и еще одной штуки

216
Ошибка p:ajax в composite component

Ошибка p:ajax в composite component

Добрый день! Делаю composite component на jsf с использованием primefacesМой компонент:

253
Ленивая загрузка объектов (Lazy loading) Java + Spring + JPA + Hibernate

Ленивая загрузка объектов (Lazy loading) Java + Spring + JPA + Hibernate

Нужно сделать ленивую загрузку для объектов, не вызывая orghibernate

407
Парсинг строки Java

Парсинг строки Java

Пример строки:

497