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

📅  最后修改于: 2023-12-03 15:27:12.310000             🧑  作者: Mango

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

如果您需要从文本文件中获取所有的手机号码,那么下面的Java程序将帮助您实现这个目标。这个程序读取一个文本文件,搜索其中所有的手机号码,然后将其打印出来。

实现方法

该程序通过正则表达式搜索所有可能的手机号码格式。然后使用Java中的Reader和BufferedReader类来读取文件。搜索到的手机号码将保存到一个数组中,并最终通过Java的Arrays类进行排序和打印。

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneNumberReader {

    public static void main(String[] args) {
        String fileName = "phoneNumbers.txt";
        String[] phoneNumbers = getPhoneNumbers(fileName);

        Arrays.sort(phoneNumbers);
        System.out.println("All phone numbers in file: ");
        for(String phoneNumber : phoneNumbers) {
            System.out.println(phoneNumber);
        }
    }

    public static String[] getPhoneNumbers(String fileName) {
        String[] phoneNumbers = new String[0];
        Pattern pattern = Pattern.compile("1\\d{10}");

        try(BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
            String line;
            while((line = reader.readLine()) != null) {
                Matcher matcher = pattern.matcher(line);
                while(matcher.find()) {
                    phoneNumbers = Arrays.copyOf(phoneNumbers, phoneNumbers.length + 1);
                    phoneNumbers[phoneNumbers.length - 1] = matcher.group();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return phoneNumbers;
    }
}
代码解析

程序的入口点是main()方法。该方法调用getPhoneNumbers()方法来获取文件中的所有手机号码。然后使用Java的Arrays.sort()方法对所有号码进行排序,并使用Java的System.out.println()方法打印所有号码。

getPhoneNumbers()方法使用Java的BufferedReader类从文件读取行,然后在每行上运行一个正则表达式以查找手机号码。所有找到的手机号码都存储在phoneNumbers数组中,并随着要添加的每个号码而动态地扩大。最后,该方法返回包含所有手机号码的数组。

正则表达式1\\d{10}用于匹配11位数字并以“1”开头的字符串,即手机号码格式。

到此,我们成功实现了从文件中查找所有的手机号码的目标!