2013-04-04 2 views
1

У меня проблема с поиском номера телефона в строке.Ищите номер телефона в строке

У меня есть функция:

public void getPhoneNumber() 
    { 
     Pattern intsOnly = Pattern.compile("\\d+"); 
     Matcher makeMatch = intsOnly.matcher(number); 
     makeMatch.find(); 
     String result = makeMatch.group(); 
     Log.i("Pattern", result);  
    } 

Но у меня есть плохой результат.

Моя строка:

String number = "String string s. s. str. 23-232 12 23 adsdsa" 
+0

Я не вижу номер телефона в строке. –

+0

Это: 23-232 12 23 – Unmerciful

+0

@Norbert - это номер всегда в том же шаблоне, что и 23-232 12 23? – Raghunandan

ответ

0

Я написал это:

Это решило мою проблему :)

public String getPhoneNumber() 
    { 
     char[] temp = numer.toCharArray(); 
     String value=""; 
     int licz=0; 

     for(int i=0;i<temp.length;i++) 
     { 
      if(licz<9) 
      { 
       if(Character.toString(temp[i]).matches("[0-9]")) 
       { 
        value+=Character.toString(temp[i]); 
        licznik++; 
       } 
       else if(Character.toString(temp[i]).matches("\u0020|\\-|\\(|\\)")) 
       { 

       } 
       else 
       { 
        value=""; 
        licz=0; 
       } 
      } 
     } 

     if(value.length()!=9) 
     { 
      value=null; 
     } 
     else 
     { 
      value="tel:"+value.trim(); 
     } 

     return value; 
    } 
0

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

String value = string.replaceAll("[^0-9]",""); 
+0

Что делать, если строка: «String 11 string s. S. Str. 23-232 12 23 adsdsa» – Unmerciful

+0

Итак, формат nubmer всегда xx-xxx xx xx? – Bullman

1

Ваш номер всегда в формате 23-232 12 23 ?. Если это так, вы можете попробовать следующее.

Попробуйте ниже

String s="String string s. s. str. 23-232 12 23 adsdsa"; 
    Pattern p = Pattern.compile("[0-9]{2}[-][0-9]{3}[ ][0-9]{2}[ ][0-9]{2} "); 
    // match 2 numbers followed by -, 
    // match 3 numbers followed by space. 
    // match 2 numbers followed by space. 
    // match 2 numbers followed by space. 
    Matcher m = p.matcher(s); 
    if(m.find()) { 
    System.out.println("............"+m.group(0)); 
    } 

Edit:

Pattern p = Pattern.compile("(\\([0-9]{2}\\)|[0-9]{2})[ ][0-9]{3}[ ][0-9]{2,2}[ ][0-9]{2} "); 

Используйте или матч оператора (23) или 23

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

заменить
String s="String string s. s. str. (23) 232 32 34 11111adsds0000000000000000a0"; 
String r = s.replace("(",""); 
String r2= r.replace(")", ""); 
System.out.println(r2); 
//String string s. s. str. 23 232 32 34 11111adsds0000000000000000a0 
+0

Но иногда мой номер (22) 232 32 34 – Unmerciful

+0

нет хифена между номерами – Raghunandan

+0

вы хотите, чтобы закругленные скобки были включены вместе с номером? – Raghunandan

Смежные вопросы