2013-04-04 80 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

我沒有看到你的字符串中的任何電話號碼。 – 2013-04-04 17:04:22

+0

This:23-232 12 23 – Unmerciful 2013-04-04 17:11:17

+0

@Norbert的數字總是與23-232 12 23一樣? – Raghunandan 2013-04-04 18:38:14

回答

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

嘗試使用正則表達式,similiar的問題在這裏:Link

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

如果字符串是:「字符串11字符串s .str。23-232 12 23 adsdsa」 – Unmerciful 2013-04-04 17:19:04

+0

那麼nubmer的格式是否是xx-xxx xx xx? – Bullman 2013-04-04 17:41:57

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)); 
    } 

編輯:

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 2013-04-06 07:55:42

+0

號碼 – Raghunandan 2013-04-06 08:20:14

+0

之間沒有hiphen你想括號括起來括號和數字? – Raghunandan 2013-04-06 08:39:06