Open In App

How to Extract Email Addresses, Phone Numbers from a CSV File using Java?

Last Updated : 08 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

CSV stands for Comma Separated Values. A CSV file is a plain text file. CSV file is used to store the records. CSV File records are stored with delimiter separator value.

Problem Statement

A CSV file is given. The task is to read and extract phone numbers, and email ids from the given CSV file, and return the list of phone numbers and emails as output.

User.csv

 

Approach

Step 1: Read the CSV file

A CSV file can be read line by line with the help of readLine() Method of BufferedReader class.

Step 2: After reading the CSV file the task is to validate the phone numbers and email Ids in the Given CSV File. To validate the phone number and email Id we can use Regular Expressions:

  • Regular Expression for Phone numbers: (0|91)?[6-9][0-9]{9}
  • Regular Expression for EmailIds: ^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$

Below is the code implementation of the above-discussed approach.

Java




import java.io.*;
import java.util.*;
 
public class CSvReaderTest {
   
    public static final String delimeter = ",";
   
    public static void read(String csvFile)
    {
        List<String> phoneNumbers = new ArrayList<String>();
        List<String> emailIds = new ArrayList<String>();
        try {
            File file = new File(csvFile);
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line = "";
            String tempArray[];
 
            while ((line = br.readLine()) != null) {
                tempArray = line.split(delimeter);
                for (String tempStr : tempArray) {
                    // Regex pattern for matching Phone
                    // Numbers
                    if (tempStr.matches(
                            "(0|91)?[6-9][0-9]{9}")) {
                        phoneNumbers.add(tempStr);
                    }
                    // Regex pattern for matching Email Ids
                    else if (
                        tempStr.matches(
                            "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$")) {
                        emailIds.add(tempStr);
                    }
                }
            }
            System.out.println("List of PhoneNumbers are:"
                               + phoneNumbers);
            System.out.println("List of Email Ids are:"
                               + emailIds);
            br.close();
        }
        catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
    public static void main(String args[])
    {
        String csvFile
            = "C:\\Users\\Rahul Chauhan\\Downloads\\FirstCSV.csv";
        CSvReaderTest.read(csvFile);
    }
}


Note: This program cannot be run through the online compiler because the csv file needs to be present on the local System. The csv file path is imported to get the result as Output.

Output:

List of PhoneNumbers are:[9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900, 9123478900]
List of Email Ids are:[UserFirst00.00@gmail.com, UserFirst01.01@gmail.com, UserFirst02.02@gmail.com, UserFirst03.03@gmail.com, UserFirst04.04@gmail.com, 
UserFirst05.05@gmail.com, UserFirst06.06@gmail.com, UserFirst07.07@gmail.com, UserFirst08.08@gmail.com, UserFirst09.09@gmail.com, UserFirst10.10@gmail.com]


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads