最近项目需要,要把一行字符串里面的电话号码识别出来,并且转换成可以直接在手机上拨打连接。用正则写了一个,初步测试好像能用。记下来,有用的时候可以用用。
直接代码:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Master
*
*/
public class TelNoUtil
{
private static final int MIN_TELNO_LEN = 3;
//识别电话号码
public static List<String> parseTelNo(String str)
{
List<String> telNo = new ArrayList<String>();
String strNo = null;
if(null == str || str.length() <= 0) {
return telNo;
}
Pattern p = Pattern.compile("(\\(?\\d+\\)?\\-?)?\\d+(\\-?\\d+)*");
Matcher m = p.matcher(str);
while (m.find()) {
strNo = m.group();
if(strNo.length() >= MIN_TELNO_LEN) {
telNo.add(m.group());
}
}
return telNo;
}
//将识别出来的电话号码处理为一个只有数字的号码
public static String parseTelNoToDail(String strTelNo)
{
StringBuffer sbrDailNo = new StringBuffer();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(strTelNo);
while (m.find()) {
sbrDailNo.append(m.group());
}
return sbrDailNo.toString();
}
//将识别出来的电话号码生成为一个拨打链接
public static String telNoToLink(String strTelString)
{
StringBuffer sbrTelLink = new StringBuffer();
if(null != strTelString && strTelString.length()>0) {
sbrTelLink.append("<a ");
sbrTelLink.append("href=\"tel:");
sbrTelLink.append(parseTelNoToDail(strTelString));
sbrTelLink.append("\">");
sbrTelLink.append(XmlString.CheckReservedString(strTelString));
sbrTelLink.append("</a>");
}
return sbrTelLink.toString();
}
//直接调用的函数,将字符串中电话号码替换成TEL链接
public static String detectionTelNo(String str)
{
List<String> telNo = parseTelNo(str);
for(String strTelNo:telNo){
System.out.println(strTelNo);
str = str.replace(strTelNo, telNoToLink(strTelNo));
}
return str;
}
}
分享到:
相关推荐
在Java编程语言中,处理字符串和正则表达式是一项常见的任务。正则表达式是一种强大的文本模式匹配工具,可以用于搜索、替换或者提取符合特定规则的字符串。在本篇文章中,我们将深入探讨如何利用Java中的Xeger和...
java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。
### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...
Java正则表达式是Java编程语言中的一个强大...总结来说,这个项目提供了学习和实践Java正则表达式的好机会,通过阅读和运行源代码,可以深入理解正则表达式在Java中的运用,以及如何有效地利用它们处理和分析字符串。
### Java正则表达式详解 #### 一、引言 正则表达式是计算机科学中的一个强大工具,用于处理文本数据。随着Java的发展,自J2SE 1.4版本开始,Java正式引入了对正则表达式的支持,并提供了一系列功能强大的API。本文...
java实现对Excel的读取,并保存到数据库中!代码简洁有注释!!!
### Java正则表达式匹配全角空格 在Java编程中,处理字符串是非常常见的需求之一。其中,使用正则表达式来对字符串进行拆分、替换等操作是一种非常高效的方法。本文将详细介绍如何使用Java中的`split()`方法,并...
### Java正则表达式基础知识与应用 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。Java中的正则表达式支持广泛的标准和特性,是进行文本处理任务的理想...
以下是一些常见的Java正则表达式及其用途: 1. `^\d+$`:这个表达式用于匹配非负整数,包括0。它会确保输入只包含数字且无前导或尾随的非数字字符。 2. `^[0-9]*[1-9][0-9]*$`:此表达式用于验证正整数,它确保...
Java正则表达式是编程语言中用于处理字符串的强大工具,其背后的理论基础是自动机理论,特别是非确定性有限状态自动机(Non-Deterministic Finite Automaton,简称NFA)。NFA是一种数学模型,用于识别和处理特定模式...
例如,中国银联的银行卡号一般16位或19位,且可能有特定的前几位数字作为银行识别代码。一个简单的正则表达式可以是: ```java String regexBankCard = "^\\d{16,19}$"; ``` 这个表达式表示16到19位的连续数字。...
Java正则表达式详解 Java中的正则表达式是一个强大的文本处理工具,它允许程序员进行复杂的字符串匹配、查找、替换和分割操作。在Java中,正则表达式是通过`java.util.regex`包来实现的,这个包提供了一系列类,如`...
"神器验证正则表达式去除复制代码前的序号"这一主题,主要涉及如何利用正则表达式来解决在编程或文本编辑时遇到的一个常见问题:代码块中的序号。 当我们在网页、文档或者代码仓库中复制代码段时,有时这些代码段会...
"2023年最完整区号/国家/手机号正则数据库"是一个集合了全球不同国家和地区电话区号、国家代码和手机号码格式的资源,对开发者来说极具价值。这个数据库可能包含了世界各国的最新区号和电话号码格式,对于开发需要...
本项目基于Java实现了一系列与DFA、NFA及正则表达式相关的转换算法,为初学者提供了一个实用的学习资源。 首先,DFA是一种状态机,它在处理输入字符串时遵循明确的规则,即在任何时候只能处于一个确定的状态。DFA...
在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的正则表达式知识点的详细解析: ### 1. 匹配中文字符 正则表达式:`[\u4e00-\u9fa5]` 此表达式用于匹配中文字符,其中`\u4e00`...
### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与特点 **1.1 正则表达式是什么?** - 正则表达式(Regular Expression)是一种模式匹配语言,用于文本搜索和替换。它提供了一种简洁而灵活的方式...
Java 提供了强大的正则表达式支持,下面是一个简单的示例用于验证MAC地址的有效性: ```java private boolean isValidMac(String macStr) { if (macStr == null || macStr.equals("")) { return false; } ...
- 分析代码结构:通过正则表达式可以识别类、方法、注释等,例如`Pattern.compile("(class|interface)\\s+\\w+")`匹配类或接口声明。 5. **优化与注意事项**: - 避免全文件扫描:对于大文件,可以采用流式处理,...
JAVA实现社会统一信用代码校验的方法 JAVA实现社会统一信用代码校验的方法是指使用JAVA语言来实现社会统一信用代码的校验,确保社会统一信用代码的正确性和合法性。本文主要介绍了JAVA实现社会统一信用代码校验的...