Android 在字符串中查找电话号码

Android 在字符串中查找电话号码,android,string,replace,phone-number,Android,String,Replace,Phone Number,我在字符串中查找电话号码时遇到问题 我有以下职能: public void getPhoneNumber() { Pattern intsOnly = Pattern.compile("\\d+"); Matcher makeMatch = intsOnly.matcher(number); makeMatch.find(); String result = makeMatch.group(); Log

我在字符串中查找电话号码时遇到问题

我有以下职能:

   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"

尝试使用regex,这里有一个类似的问题:


尝试使用regex,这里有一个类似的问题:


您的号码是否始终采用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));
    }
编辑:

使用or运算符匹配(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

您的号码是否始终采用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));
    }
编辑:

使用or运算符匹配(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
我写道:

这解决了我的问题:)

公共字符串getPhoneNumber()
{
char[]temp=numer.toCharArray();
字符串值=”;
int-licz=0;
对于(int i=0;i我写了以下内容:

这解决了我的问题:)

公共字符串getPhoneNumber()
{
char[]temp=numer.toCharArray();
字符串值=”;
int-licz=0;

for(int i=0;iI)在您的字符串中看不到任何电话号码。@Norbert是始终与23-232 12 23模式相同的号码?我在您的字符串中看不到任何电话号码。@Norbert是始终与23-232 12 23模式相同的号码?如果字符串是:“string 11 string s.s.str.23-232 12 23 adsdsa”该怎么办“String 11 String s.s.str.23-232 12 23 adsdsa”但我的号码有时是(22)232 32 34您想将圆括号与号码一起包含吗?但我的号码有时是(22)232 32 34您想将圆括号与号码一起包含吗?
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;
    }