最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java正則表達式的應(yīng)用 java讀取文件并獲取電話號碼

 更新時間:2015年11月27日 17:09:04   作者:WhyWin  
這篇文章主要介紹了java正則表達式的應(yīng)用,應(yīng)用的內(nèi)容是java讀取文件并獲取電話號碼,感興趣的小伙伴們可以參考一下

實現(xiàn)功能:讀取文件,將其中的電話號碼存入一個Set返回。

方法介紹:

find():嘗試查找與該模式匹配的輸入序列的下一個子序列。

group():返回由以前匹配操作所匹配的輸入子序列。

1、從一個字符串中獲取出其中的電話號碼

import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 從字符串中截取出電話號碼
 * @author zcr
 *
 */
public class CheckIfIsPhoneNumber 
{
  
  /**
   * 獲得電話號碼的正則表達式:包括固定電話和移動電話
   * 符合規(guī)則的號碼:
   *   1》、移動電話
   *     86+‘-'+11位電話號碼
   *     86+11位正常的電話號碼
   *     11位正常電話號碼a
   *     (+86) + 11位電話號碼
   *     (86) + 11位電話號碼
   *   2》、固定電話
   *     區(qū)號 + ‘-' + 固定電話 + ‘-' + 分機號
   *     區(qū)號 + ‘-' + 固定電話 
   *     區(qū)號 + 固定電話
   * @return  電話號碼的正則表達式
   */
  public static String isPhoneRegexp()
  {
    String regexp = "";
    
    //能滿足最長匹配,但無法完成國家區(qū)域號和電話號碼之間有空格的情況
    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 phoneSet  dataStr中的電話號碼
   */
  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);
  }
}

2、讀取文件并調(diào)用電話號碼獲取
實現(xiàn)方式:根據(jù)文件路徑獲得文件后,一行行讀取,去獲取里面的電話號碼

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;



/**
 * 讀取文件操作
 * 
 * @author zcr
 * 
 */
public class ImportFile
{
  /**
   * 讀取文件,將文件中的電話號碼讀取出來,保存在Set中。
   * @param filePath  文件的絕對路徑
   * @return      文件中包含的電話號碼
   */
  public static Set<String> getPhoneNumFromFile(String filePath)
  {
    Set<String> phoneSet = new HashSet<String>();
    
    try
    {
      String encoding = "UTF-8";
      File file = new File(filePath);
      if (file.isFile() && file.exists())
      { // 判斷文件是否存在
        InputStreamReader read = new InputStreamReader(
            new FileInputStream(file), encoding);// 考慮到編碼格
        BufferedReader bufferedReader = new BufferedReader(read);
        String lineTxt = null;

        while ((lineTxt = bufferedReader.readLine()) != null)
        {
          //讀取文件中的一行,將其中的電話號碼添加到phoneSet中
          CheckIfIsPhoneNumber.getPhoneNumFromStrIntoSet(lineTxt, phoneSet);
        }
        read.close();
      }
      else
      {
        System.out.println("找不到指定的文件");
      }
    }
    catch (Exception e)
    {
      System.out.println("讀取文件內(nèi)容出錯");
      e.printStackTrace();
    }
    
    return phoneSet;
  }

}

3、測試

public static void main(String argv[])
  {
    String filePath = "F:\\three.txt";  
    
    Set<String> phoneSet = getPhoneNumFromFile(filePath);
    
    System.out.println("電話集合:" + phoneSet);
  }

文件中數(shù)據(jù):

結(jié)果:

電話集合:[86132221, (86)13222144332, 86-13222144332, 32434343, (+86)13222144332, 13888888888]

以上就是整個應(yīng)用的實現(xiàn)過程,希望大家通過這個案例,對java正則表達式使用更加熟練。

相關(guān)文章

  • Java中JDBC事務(wù)與JTA分布式事務(wù)總結(jié)與區(qū)別

    Java中JDBC事務(wù)與JTA分布式事務(wù)總結(jié)與區(qū)別

    Java事務(wù)的類型有三種:JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器事務(wù),本文詳細介紹了JDBC事務(wù)與JTA分布式事務(wù),有需要的可以了解一下。
    2016-11-11
  • Spring bean為什么需要依賴注入

    Spring bean為什么需要依賴注入

    本篇文章主要介紹了Spring依賴注入的三種方式小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • java OpenTelemetry日志體系及缺陷解決方案

    java OpenTelemetry日志體系及缺陷解決方案

    這篇文章主要為大家介紹了java OpenTelemetry日志體系及缺陷解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 解析Mybatis連續(xù)傳遞多個參數(shù)的方法

    解析Mybatis連續(xù)傳遞多個參數(shù)的方法

    MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架,這篇文章主要介紹了Mybatis連續(xù)傳遞多個參數(shù)的方法,需要的朋友可以參考下
    2016-08-08
  • MyBatis?實現(xiàn)動態(tài)排序的多表查詢

    MyBatis?實現(xiàn)動態(tài)排序的多表查詢

    本文將展示如何在 Java 項目中結(jié)合 MyBatis 實現(xiàn)動態(tài)排序,尤其是在涉及多表查詢的情況下,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • SpringCloud組件性能優(yōu)化的技巧

    SpringCloud組件性能優(yōu)化的技巧

    這篇文章主要介紹了SpringCloud組件性能優(yōu)化的技巧,Springcloud?原始的配置,性能是很低的,大家可以使用?Jmeter?測試一下,QPS?不會到?50,要做到高并發(fā),需要做不少的配置優(yōu)化,需要的朋友可以參考下
    2023-09-09
  • springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的裝配講解

    springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的

    今天小編就為大家分享一篇關(guān)于springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的裝配講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • redis在java中的使用(實例講解)

    redis在java中的使用(實例講解)

    下面小編就為大家?guī)硪黄猺edis 在java中的使用(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解Intellij IDEA 2017 debug斷點調(diào)試技巧(總結(jié))

    詳解Intellij IDEA 2017 debug斷點調(diào)試技巧(總結(jié))

    這篇文章主要介紹了詳解Intellij IDEA 2017 debug斷點調(diào)試技巧(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

五莲县| 衡水市| 岫岩| 搜索| 宜宾市| 修水县| 抚宁县| 道孚县| 宜州市| 商丘市| 昌吉市| 耒阳市| 昌黎县| 宁津县| 靖州| 邮箱| 清丰县| 泰州市| 安化县| 靖边县| 呼伦贝尔市| 泽普县| 海丰县| 赫章县| 凤城市| 正阳县| 大冶市| 晋江市| 新河县| 杭锦后旗| 文成县| 九龙县| 资源县| 普兰店市| 朔州市| 定远县| 观塘区| 翁源县| 克什克腾旗| 县级市| 绩溪县|