2015-10-30 4 views
0

Я ищу, чтобы замаскировать содержимое текстового файла.Как замаскировать содержимое текстового файла в Java

Пример: Текстовый файл содержит данные, такие как

Peter|[email protected]|312-445-9988|....| 
John|[email protected]|123-457-6789|....| 

Ожидаемый результат:

Peter|[email protected]|XXX-XXX-XXXX|....| 
John|[email protected]|XXX-XXX-XXXX|....| 

Я должен маскировать содержание как номер телефона и почты ID до питер не @ gmail.com

Вот мой код, который я пробовал, я пробовал до чтения данных из текстового файла после этого, я не получаю никаких идей ...

public class DataMasking { 
public static void main(String args[]) throws IOException{ 

    BufferedReader in = new BufferedReader(new FileReader("Filepath")); 
    String str; 

    List<String> parts = new ArrayList<String>(); 
    while ((str = in.readLine()) != null) { 

     parts.add(str); 
     } 
    int size = parts.size(); 
    //we are reducing the size by one because we are not counting the first line(Only contains file name and time stamp). 
    size = size-1; 
    System.out.println("The Number of lines in the text file "+size); 

Любая помощь приветствуется.

+0

Так что вам нужно замаскировать данные при печати на экране? –

+1

Каковы детали маскировки, которую вы должны предоставить? Вы хотите удалить первый бит адреса электронной почты? Замените его * или что-то в этом роде? Как насчет номера телефона? –

+0

Маска данных и сохранение данных в другом файле. -Nick DeFazio – vicky

ответ

0

Хорошо, может быть, вы хотите что-то вроде этого. Попробуйте это -

BufferedReader in = new BufferedReader(new FileReader("filepath")); 
String str; 

List<String> parts = new ArrayList<String>(); 
while ((str = in.readLine()) != null) { 
     parts.add(str); 
    } 
List<String> newList = new ArrayList<String>(); 
List<String> emailPart=new LinkedList<String>(); 
List<String> numberPart=new LinkedList<String>(); 
for(int i=1;i<parts.size();i++){ 
    String[] strArr=parts.get(i).split("\\|"); 
    for(int j=0;j<strArr.length;j++){ 
     if(strArr[j].matches(".*@.*")){ 
      int index=strArr[j].indexOf("@"); 
      emailPart.add(strArr[j].substring(0, index).replaceAll("[A-Za-z0-9]", "X")+ 
        strArr[j].substring(index, strArr[j].length())); 
     } 
     if(strArr[j].matches("[0-9\\-]+")){ 
      numberPart.add(strArr[j].replaceAll("[0-9]", "X")); 
     } 
    } 
     newList.add(strArr[0]+"|"+emailPart.get(i-1)+"|"+numberPart.get(i-1)); 
} 
System.out.println(newList); 
+0

Привет. Это должен быть ожидаемый результат: Peter | [email protected] | XXX-XXX-XXXX | .... | John | [email protected] | XXX-XXX-XXXX | .... | – vicky

+0

Я отредактировал ответ. Пожалуйста, проверьте его и сообщите, если он работает на вас. –

Смежные вопросы