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 文件,查找电子邮件,然后存储到数据库中。我发现一封电子邮件被提取了两次,即 HYPERLINK "mailto: aa@ymail.com" 然后是 aa@ymail.com

如何通过删除所有相似的电子邮件来匹配两封相似的电子邮件并保留一份副本?

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 回答