2015-10-05 103 views
-1

我需要從字符串中提取手機號碼,獲取手機號碼。我從字符串中提取數字,但沒有得到我需要的。識別與字符串

這裏是輸入:一個字符串包含的地址和電話號碼。

String input = "Street1,Punjab Market-Patiala 147001 M:92166-29903" 

我需要提取手機號碼,這是92166-29903

我用這個方法來檢查字符串是否包含一個手機號碼或不:

private Boolean isMobileAvailable(String string) 
{ 
    Boolean ismobile = false; 
    if (string.matches("(?i).*M.*")) 
    { 
     ismobile = true; 
    } 
    return ismobile; 
} 

用來在代碼如下:

String mobilenumber=""; 

private void getMobileNumber(String sample) 
{ 
    int index = sample.indexOf("M"); 
    String newString = ""; 
    newString = sample.substring(index, sample.length()); 
    mobileNumber = newString.replaceAll("[^0-9]", ""); 
    edtMobile.setText(mobileNumber.substring(0, 10)); 
} 

在這裏,而不是手機號碼,我獲得147009211

我怎樣才能正確地識別來自上面的字符串的手機號碼?

+0

也許在這個崗位所提供的正則表達式是你在找什麼:http://stackoverflow.com/questions/8634139/phone-validation-regex –

+0

你有至少調試應用程序?你知道什麼是錯的嗎? (提示:'sample.indexOf()'發現** **第一字符串的情況下...有一個爲尋找** **最後彼此功能) –

+0

什麼類型做你的結果有諸如92166-29903?你在這裏提到。 – starkshang

回答

0
int index = sample.lastIndexOf("M"); 
String newString = sample.substring(index+2, sample.length()); 
mobileNumber = newString.replaceAll("[^0-9]", ""); 
edtMobile.setText(mobileNumber.substring(0, 10)); 

如果你希望 「 - 」 在你的結果,只是刪除
mobileNumber = newString.replaceAll("[^0-9]", "");

+0

Thanks.It對我的作品很好.. – Archana

+0

但問題是輸入字符串是動態的,所以它不可能幫助尋找M.Because的最後一個索引其他字符串可以陪移動像EMAIL。如果沒有號碼存儲在mobilenumber變量中。如何在這種情況下識別mobilenumber。感謝 – Archana

0

試試這個代碼。 方法1:

String input = "Street1,Punjab Market-Patiala 147001 M:92166-29903"; 
    int value = input.lastIndexOf(":"); 
    String s = input.substring(value + 1, input.length()); 
    Log.d("reverseString", "" + s); 

方法2:

StringBuffer reverseString=new StringBuffer(input); 
    StringBuffer s1=reverseString.reverse(); 
    int firstindex=s1.indexOf(":"); 
    String finalstring=s1.substring(0, firstindex); 
    StringBuffer getexactstring=new StringBuffer(finalstring); 

這個代碼將會給你確切想要的手機號碼。