Как получить все целые числа, присутствующие в строке? - PullRequest
1 голос
/ 23 августа 2011

Я использую следующий код, чтобы получить целые числа, присутствующие в строке. Но это даст первое вхождение целого числа. Просто напечатайте 14. Мне нужно получить все целые числа. Любые предложения.

Pattern intsOnly = Pattern.compile("\\d+");
            Matcher makeMatch = intsOnly.matcher("hello14 hai22. I am here 4522");
            makeMatch.find();
            String inputInt = makeMatch.group();

Ответы [ 4 ]

4 голосов
/ 23 августа 2011

Подсказка: вам не нужно зацикливаться, чтобы получить все цифры?

2 голосов
/ 23 августа 2011
Pattern intsOnly = Pattern.compile("\\d+");
Matcher makeMatch = intsOnly.matcher("hello14 hai22. I am here 4522");
String inputInt = null;
while(makeMatch.find()) {
    inputInt = makeMatch.group();
    System.out.println(inputInt);
}
1 голос
/ 23 августа 2011

См. этот хороший учебник по регулярным выражениям в Java :

Чтобы найти первое совпадение регулярного выражения в строке темы, вызовите myMatcher.find ().Чтобы найти следующее совпадение, снова вызовите myMatcher.find ().Когда myMatcher.find () возвращает false, указывая, что больше нет совпадений, следующий вызов myMatcher.find () снова найдет первое совпадение.Matcher автоматически сбрасывается на начало строки при сбое find ().

Т.е. вы можете использовать следующий код:

while (makeMatch.find()) {
  String inputInt = makeMatch.group();
  // do something with inputInt
}
1 голос
/ 23 августа 2011
List<Integer> allIntegers = new ArrayList<Integer>();
while(matcher.find()){
    allIntegers.add(Integer.valueOf(matcher.group));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...