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