程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java正則表達式的運用 java讀取文件並獲得德律風號碼

java正則表達式的運用 java讀取文件並獲得德律風號碼

編輯:關於JAVA

java正則表達式的運用 java讀取文件並獲得德律風號碼。本站提示廣大學習愛好者:(java正則表達式的運用 java讀取文件並獲得德律風號碼)文章只能為提供參考,不一定能成為您想要的結果。以下是java正則表達式的運用 java讀取文件並獲得德律風號碼正文


完成功效:讀取文件,將個中的德律風號碼存入一個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 
{
  
  /**
   * 取得德律風號碼的正則表達式:包含固定德律風和挪動德律風
   * 相符規矩的號碼:
   *   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 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、讀取文件並挪用德律風號碼獲得
完成方法:依據文件途徑取得文件後,一行行讀取,去獲得外面的德律風號碼

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("讀取文件內容失足");
      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);
  }

文件中數據:

成果:

德律風聚集:[86132221, (86)13222144332, 86-13222144332, 32434343, (+86)13222144332, 13888888888]

以上就是全部運用的完成進程,願望年夜家經由過程這個案例,對java正則表達式應用加倍闇練。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved