Использование сканера для поиска значений внутри строки - PullRequest
0 голосов
/ 10 февраля 2019

Я написал сканер, который ищет [целые числа или числа Фолта] внутри строки, однако я хочу оценить строку, чтобы найти количество лайков внутри нее.и получите только время, а не любое число.

Строка, например:

"Пользователю понравилось 80,00 изображений в этом месяце на счете 15478 до этой даты 02/10/2019"

            try {
            Scanner scanner = new Scanner( message ).useDelimiter( "[^\\d.]+" );
            VlauesInMessage = scanner.nextInt();
            Log.w("Enter IntSCanner", String.valueOf( VlauesInMessage ));
            scanner.close();
            } catch (InputMismatchException e) {
              System.out.print(e.getMessage()); 
            }

однако,

Я хочу, чтобы сканер остановился после того, как появилось определенное слово, такое как «Изображения», потому что иногда это приносит мне 15478 или 10 в результате.Есть ли лучшая идея для извлечения понравившихся раз, имейте в виду, что иногда число лайков может быть 80.10.

1 Ответ

0 голосов
/ 10 февраля 2019

Класс Сканер имеет метод findWithinHorizon(String,int).Найдите расположение слова «images» на входе и используйте его в качестве ограничения при вызове метода findWithinHorizon().Вот простой пример.

Scanner s = new Scanner(message);
String str = s.findWithinHorizon("\\d+(\\.\\d+)?", message.indexOf("images"));

Результат с использованием вашего образца ввода:

80.00

Существует также метод skip(String).Таким образом, чтобы отсканировать число после слова «images», используйте следующее:

s.skip("^.*images")
String str = s.findWithinHorizon("\\d+(\\.\\d+)?", 0);

Для вашего образца введите результат:

15478

...