重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
java中如何提取一个字符串中的电话号码,先写出手机号码和固定号码的正则表达式,然后创建模式,获取到匹配器,从而刷选出符合要求的电话号码,如下:
我们提供的服务有:网站设计制作、网站设计、微信公众号开发、网站优化、网站认证、城固ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的城固网站制作公司
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
比如你拿到的数字是 number, 所有手机号码为 tele_nums,一个手机号码为tele_num;
。。。
String test = String.vlaueOf(number);
for(...) { //获取单个手机
if(tele_num.contains(test)) {
...
...这里面就已经过滤了
}
}
楼上应该放出答案了,我这里只是用其他界面显示,不懂Swing的可以略过,(代码比较粗略,不一定符合规范,照搬需谨慎)
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Demo extends JFrame {
ListString pnos = new ArrayListString();
public static void main(String[] args) {
new Demo();
}
public Demo() {
StringBuffer sb = new StringBuffer("htmlbody");
while (pnos.size() 15) {// "随机"生成电话号码,可以不理他
String telString = getRandomTel();
if (!pnos.contains(telString)) {
pnos.add(telString);
sb.append(telString);
if (pnos.size() % 3 == 0) {
sb.append("br/");
} else if (pnos.size() 15) {
sb.append(",");
}
}
}
sb.append("/body/html");
JLabel label = new JLabel(sb.toString());
final JTextField input = new JTextField();
final JLabel result = new JLabel();
this.setLayout(new GridLayout(3, 1));
this.add(label);
this.add(input);
this.add(result);
this.setSize(new Dimension(300, 500));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
input.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent keyevent) {
result.setText(getMatchNo(input.getText()));
}
});
}
/**
*
* @param perfix
* @return
*/
public String getMatchNo(String perfix) {
StringBuffer sb = new StringBuffer("htmlbody");
if (perfix != null !perfix.trim().equals(""))
for (String string : pnos) {// 这里是你要的部分,遍历“号码本”匹配是否为输入数字的开头
if (string.startsWith(perfix)) {
sb.append(string).append("br/");
}
}
sb.append("/body/html");
return sb.toString();
}
private static String[] telFirst = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153"
.split(",");
private static String getRandomTel() {
int index = getNum(0, telFirst.length - 1);
String first = telFirst[index];
String second = String.valueOf(getNum(1, 888) + 10000).substring(1);
String thrid = String.valueOf(getNum(1, 9100) + 10000).substring(1);
return first + second + thrid;
}
public static int getNum(int start, int end) {
return (int) (Math.random() * (end - start + 1) + start);
}
}