1
public String readEmails(String fileData) {

    String regex = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9]"
            + "(?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";

    String emails = "", emails2 = "";
    fileData = fileData.toLowerCase();
    Matcher m = Pattern.compile(regex).matcher(fileData);
    while (m.find()) {
        emails += m.group()+", ";
    }

    return emails;
}

rtfファイルを読み、メールを見つけてDBに保存しています。1つのメールが2回抽出されていることがわかりました。つまり、HYPERLINK "mailto:aa@ymail.com"とaa@ymail.comです。

2つの類似した電子メールを照合し、類似した電子メールをすべて削除して1つのコピーを保持するにはどうすればよいですか?

4

2 に答える 2

1

コードを次のように変更できます

Set<String> set = new HashSet<String>();
Matcher m = Pattern.compile(regex).matcher(fileData);
    while (m.find()) {
        String email = m.group();
        if (!set.contains(email)) {
           emails += email + ", ";
           set.add(email);
        }
    }

    return emails;
}
于 2012-12-12T17:16:33.763 に答える
0

電子メールをコンマ付きの文字列として保存する代わりに:

  1. 小文字にします。
  2. それらを辞書(HashSet)に保存して重複排除します
  3. 最後に、ディクショナリの要素から出力文字列を作成します。
于 2012-12-12T17:01:24.873 に答える