2015-10-05 106 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); 

这个代码将会给你确切想要的手机号码。