怎么利用java读取程序中客户电话号码信息

怎么利用java读取程序中客户电话号码信息,第1张

import java.util.HashSet

import java.util.Set

import java.util.regex.Matcher

import java.util.regex.Pattern

/**

* 从字符串中截取出电话号码

* @author zcr

*

*/

public class CheckIfIsPhoneNumber

{

/**

* 获得电话号码的正则表达式:包括固定电话和移动电话

* 符合规则的号码:

* 1》、移动电话

* 86+‘-’+11位电话号码

* 86+11位正常的电话号码

* 11位正常电话号码a

* (+86) + 11位电话号码

* (86) + 11位电话号码

* 2》、固定电话

* 区号 + ‘-’ + 固定电话 + ‘-’ + 分机号

* 区号 + ‘-’ + 固定电话

* 区号 + 固定电话

* @return电话号码的正则表达式

*/

public static String isPhoneRegexp()

{

String regexp = ""

//能满足最长匹配,但无法完成国家区域号和电话号码之间有空格的情况

String mobilePhoneRegexp = "(?:(\\(\\+?86\\))((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})|" +

"(?:86-?((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})|" +

"(?:((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})"

//System.out.println("regexp = " + mobilePhoneRegexp)

//固定电话正则表达式

String landlinePhoneRegexp = "(?:(\\(\\+?86\\))(0[0-9]{2,3}\\-?)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?)|" +

"(?:(86-?)?(0[0-9]{2,3}\\-?)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?)"

regexp += "(?:" + mobilePhoneRegexp + "|" + landlinePhoneRegexp +")"

return regexp

}

/**

* 从dataStr中获取出所有的电话号码(固话和移动电话),将其放入Set

* @param dataStr待查找的字符串

* @param phoneSetdataStr中的电话号码

*/

public static void getPhoneNumFromStrIntoSet(String dataStr,Set<String>phoneSet)

{

//获得固定电话和移动电话的正则表达式

String regexp = isPhoneRegexp()

System.out.println("Regexp = " + regexp)

Pattern pattern = Pattern.compile(regexp)

Matcher matcher = pattern.matcher(dataStr)

//找与该模式匹配的输入序列的下一个子序列

while (matcher.find())

{

//获取到之前查找到的字符串,并将其添加入set中

phoneSet.add(matcher.group())

}

//System.out.println(phoneSet)

}

}

java中如何提取一个字符串中的电话号码,先写出手机号码和固定号码的正则表达式,然后创建模式,获取到匹配器,从而刷选出符合要求的电话号码,如下:

import java.util.regex.Matcher

import java.util.regex.Pattern

public class TestC {

public static void main(String[] args){

//要提前号码的字符串

String str="n13977777777s18911111111你好15988888888hha0955-7777777sss0775-6678111"

//提取手机号码

checkCellphone(str)

//提取固定电话号码

checkTelephone(str)

}

/**

 * 查询符合的手机号码

 * @param str

 */

public static void checkCellphone(String str){

        // 将给定的正则表达式编译到模式中

Pattern pattern = Pattern.compile("((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}")

// 创建匹配给定输入与此模式的匹配器。

Matcher matcher = pattern.matcher(str)

//查找字符串中是否有符合的子字符串

while(matcher.find()){

        //查找到符合的即输出

System.out.println("查询到一个符合的手机号码:"+matcher.group())

}

}

/**

 * 查询符合的固定电话

 * @param str

 */

public static void checkTelephone(String str){

 // 将给定的正则表达式编译到模式中

Pattern pattern = Pattern.compile("(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)")

// 创建匹配给定输入与此模式的匹配器。

Matcher matcher = pattern.matcher(str)

//查找字符串中是否有符合的子字符串

while(matcher.find()){

         //查找到符合的即输出

System.out.println("查询到一个符合的固定号码:"+matcher.group())

}

}

结果:

查询到一个符合的手机号码:13977777777

查询到一个符合的手机号码:18911111111

查询到一个符合的手机号码:15988888888

查询到一个符合的固定号码:0955-7777777

查询到一个符合的固定号码:0775-6678111

可以通过输入公式进行提取,具体 *** 作的步骤如下:

工具/原材料

1、打开电脑找到并点击excel2019版新建工作表;

2、双击打开excel表格以后,为了更好的示范先在表格内编辑好有手机号的文字内容;

3、编辑好文字以后,先选中辅助列B列的单元格并输入公式:=MID(A1,FIND("1",A1),11);

4、在编辑栏里输入公式以后,在按“ctrl+回车键”此时B列选中的单元格内已经提取成功。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8118289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存