найти 6-значный номер в строке - PullRequest
3 голосов
/ 04 января 2012

У меня есть строка из SMS, например:

"Ваш код: 123456. Ваш ссылочный номер 012. Общая сумма E 1250,00 .."

Теперь мне нужно извлечь код «123456», который каждый раз отличается, но всегда 6 цифр.

Как мне извлечь это 6-значное число из строки? Можно ли как-нибудь использовать выражения Regex? Мне нужно быть уверенным, поэтому я не хочу делиться на «код:», например.

EDIT: Остальной текст может быть другим, но в SMS будет только 6 цифр.

Ответы [ 4 ]

19 голосов
/ 04 января 2012

Регулярное выражение для 6-значного числа:

\d{6}

Редактировать: код будет выглядеть как

public static String extractDigits(final String in) {
   final Pattern p = Pattern.compile( "(\\d{6})" );
   final Matcher m = p.matcher( in );
   if ( m.find() ) {
     return m.group( 0 );
   }
   return "";
 }
6 голосов
/ 04 января 2012

Не уверен, поддерживает ли Java Regex обходные пути.Если это так:

(?<!\d)\d{6}(?!\d)

Изменить: это так.(Спасибо богемный)

2 голосов
/ 04 января 2012

Почему бы просто не использовать substring()?

String s = "Your code: 123456. Your reference number is 012. The total amount is E 1250,00..";
String s2 = s.substring(11);
String code = s2.substring(0, s2.indexOf("."));

или просто:

String code = s.substring(11, 17);

так как это всегда 6 цифр.

0 голосов
/ 04 января 2012
   String text = "125432";
   String regex = "\\D*\\d{6}\\D*";

   Matcher m = Pattern.compile(regex).matcher(text);
   if(m.find())
      System.out.println(m.group(0).trim().substring(0,6));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...