首页 > 解决方案 > 无法从java中的字符串数组中获取匹配的字符串值

问题描述

我有一个字符串值,其中包含用逗号分隔的电子邮件地址,我必须检查是否从字符串数组中添加了任何相同的邮件地址

我使用 split 来获取以逗号分隔的电子邮件地址数组,然后声明两个 for 循环进行检查。在内部 for 循环中,我指定了条件,但它只是打印所有邮件地址。如何获得匹配的电子邮件地址和唯一的电子邮件地址

public class EmailDomains {

    public static void main(String[] args) {

        String st = "test1@gmail.com,"
                + "test2@gmail.com,"
                + "test@yahoo.com,"
                + "test@hotmail.com,"
                + "test@rediff.com,"
                + "test@rediff.com,"
                + "wer@gmailcom";
        st.trim();
        String[] total = st.split("\\,");
        //System.out.println(total.length);
        for(int i=0;i<total.length;i++) {
            for(int j=0;j<total.length;j++)
            {
                System.out.println(total[i]+" --- "+total[j]);
                if(total[i].trim().equals(total[j].trim()))
                {
                    /*
                     * System.out.println(total[i]); break;
                     */
                }
            }
            //System.out.println(total[i]);
        }

    }

}

需要从上述字符串中获取匹配和不匹配的电子邮件地址

朋友们,我必须将匹配的邮件存储在一个数组中,并将唯一的邮件存储在另一个数组中,以便我可以使用唯一的邮件 ID 进行验证,请给我一个想法,因为我是初学者,我需要帮助并提前致谢

标签: javaarraysstring

解决方案


您正在通过列表两次 - 使用i和再次使用j。有时ij是相同的值,比如“3”。在这种情况下if(total[i].trim().equals(total[j].trim()))是正确的 - 这是有道理的,因为您正在将列表中的特定条目与其自身进行比较。

看起来您想忽略何时ij是相同的。您可以通过添加if检查来做到这一点,如下所示:

for (int i = 0; i < total.length; i++) {
    for (int j = 0; j < total.length; j++) {
        if (i != j) {
            if (total[i].trim().equals(total[j].trim())) {
                System.out.println(total[i] + " --- " + total[j]);
            }
        }
    }
}

推荐阅读