java プログラミング
以下のプログラムを改良したいのですがどの用に書き換えればいいかわからないので皆さんの力を貸してください。
1.最後に表示されるメールアドレスの後には;を表示しない。
2.コンマやセミコロンなどで区切られているメールアドレスも認識する(現段階では二つのアドレスの間にスペースがないと認識できません)aaa@bbb.ccc,AAA@BBB.CCC;AaA@BbB.CcCを認識する。
3. メルアドレスだけが一列ごとに並んでいるものを認識する。
aaa@bbb
ccc@ddd
eee@fffなどです。
メールアドレスの検出の仕方として@から前後にスペースがあるまでループするようにしてあるので上記の場合うまく働きません。以上の三点をみたすように改良するのに必要なコードブロックを教えてください。
プログラミング初心者なのでなるべく簡単に説明していただけると幸いです。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class Email
{
@SuppressWarnings("unchecked")
public static void main(String[] argv) throws Exception
{
String input = "fileContainingEmails.txt";
String output = "copyPasteMyEmails.txt";
BufferedReader cin;
cin = new BufferedReader(new InputStreamReader(System.in));
String userInput;
System.out.println("Enter input file name [default name: " + input + " ]");
userInput = cin.readLine();
if (userInput.equals(""))
userInput = input;
String name;
if (userInput.equals(input))
name = output;
else
name = userInput;
String userOutput;
System.out.println("Enter output file name [default name: " + name + " ]");
userOutput = cin.readLine();
if (userOutput.equals(""))
userOutput = name;
System.out.println("Input FIle : " + userInput);
System.out.println("Output FIle : " + userOutput);
BufferedReader fin;
fin = new BufferedReader(new FileReader(userInput));
PrintWriter fout;
fout = new PrintWriter(new FileWriter(userOutput, true));
String lineFromFile = "";
List listOfMail = new ArrayList();
int indexOfAt = 0;
int s = 0,e = 0;
while (fin.ready())
{
lineFromFile = fin.readLine();
indexOfAt = lineFromFile.indexOf('@',indexOfAt);
while(indexOfAt > 0)
{
for(int i = 0;lineFromFile.charAt(indexOfAt - i) != ' ';i++)
s = indexOfAt - i;
for(int i = 0;lineFromFile.charAt(indexOfAt + i) != ' ';i++)
e = indexOfAt + i;
if(listOfMail.indexOf(lineFromFile.substring(s,e).toLowerCase()) < 0)
{
listOfMail.add(lineFromFile.substring(s,e).toLowerCase());
fout.println(lineFromFile.substring(s,e).toLowerCase());
System.out.print(lineFromFile.substring(s,e));
System.out.println(";");
}
indexOfAt = lineFromFile.indexOf('@',indexOfAt + 1);
}
}
fin.close();
fout.close();
System.out.println();
int count = 0;
count = listOfMail.size();
if (count == 0)
System.out.println("Sorry, no email addresses were found in the file " + userInput);
else
System.out.println(count + " email addresses were found, and copied to " + userOutput);
System.out.println("Open " + userOutput + " and copy and paste those e-mail addresses into the to, cc, or bcc field.");
System.out.println("Pasting into bcc field is the best way because everyone's email address does not appear in the message.");
}
}