📜  用于读取给定文件中存在的所有手机号码的Java程序

📅  最后修改于: 2022-05-13 01:54:43.116000             🧑  作者: Mango

用于读取给定文件中存在的所有手机号码的Java程序

给定输入文本文件,读取所有存在的手机号码并写入某个输出文件。

假设我们有一个文件名为input.txt ,并且在该输入文件中我们有一些手机号码,这些手机号码与其他一些数据混合在一起。我们的任务是逐行读取输入文件,如果我们在该行中找到任何号码,我们必须将该手机号码写入另一个文件,即output.txt文件。

例子 :

手机号码验证标准:

  • 第一个数字应包含 7 到 9 之间的数字。
  • 其余 9 位可以包含 0 到 9 之间的任何数字。
  • 手机号码也可以有11位数字,包括0
    在开始。
  • 手机号码可以是12位数字也可以包括91
    在开始

满足上述条件的号码,即为有效的手机号码。

方法:我们使用正则表达式,首先我们必须为手机号码形成一个正则表达式。每当 input.txt 文件中的任何数字与我们为手机号码形成的正则表达式匹配时,匹配的数字将被写入 output.txt 文件。

下面是Java实现是上面的方法:

// Java program to read all mobile numbers
// present in given file
import java.util.regex.*;
import java.io.*;
  
class MobileNumberExtraction 
{
    public static void main(String[] args) throws IOException
    {
        // Write Mobile Numbers to output.txt file
        PrintWriter pw = new PrintWriter("output.txt");
  
        // Regular expression for mobile number
        Pattern p = Pattern.compile("(0/91)?[7-9][0-9]{9}");
  
        // BufferedReader for reading from input.txt file
        BufferedReader br = new BufferedReader
                                (new FileReader("input.txt"));
        String line = br.readLine();
          
        while (line != null) 
        {
            Matcher m = p.matcher(line);
  
            while (m.find()) 
            {
                // Write the mobile number to output.txt file
                pw.println(m.group());
            }
  
            line = br.readLine();
        }
        pw.flush();
    }
}

输出 :

7873923408
7205435005

上面的输出是针对这个 input.txt 文件的:

Abstract classes may have some executable methods
and 7873923408 methods left unimplemented. Interfaces 
contain no implementation code. An abstract
class can have non abstract 7205435005 methods. 
All methods 1234 of an interface are abstract.