简体   繁体   English

如何通过使用Java中的split从字符串中获取多个电子邮件的列表?

[英]How to get a list of multiple emails from a string by using split in Java?

I have this string that contains a bunch of emails in it: 我有一个包含一堆电子邮件的字符串:

" email1@gmail.com , 'email2@gmail.com,email3@gmail.com, email4@gmail.com' , 'email5@gmail.com ,email6@gmail.com' " “ email1@gmail.com,'email2 @ gmail.com,email3 @ gmail.com,email4@gmail.com','email5@gmail.com,email6 @ gmail.com'”

So what I'm trying to do is extract each email from each substring and end up with an array that contains all those email: 所以我想做的是从每个子字符串中提取每个电子邮件,最后得到一个包含所有电子邮件的数组:

Example: 例:

String[] myArray = {email1@gmail.com , email2@gmail.com, email3@gmail.com, email4@gmail.com, email5@gmail.com}; String [] myArray = {email1@gmail.com,email2@gmail.com,email3@gmail.com,email4@gmail.com,email5@gmail.com};

Here's my code: 这是我的代码:

String str = "email1@gmail.com , 'email2@gmail.com,email3@gmail.com, email4@gmail.com' , 'email5@gmail.com ,email6@gmail.com'";

    String[] newArray = str.split(",");
     for(int i = 0 ; i < newArray.length; i++) 
        {
        if(newArray[i].contains(",")) 
         {
            newArray = newArray[i].split(",");
         }
        }

Keep in mind that a subString may have multiple emails in it. 请记住,subString中可能包含多封电子邮件。

You can use Pattern matching and regex, a simple email follows : \\w+@\\w+.com : multipleWordCharacter@multipleWordCharacter.com 您可以使用模式匹配和正则表达式,其后是一个简单的电子邮件: \\w+@\\w+.commultipleWordCharacter@multipleWordCharacter.com

public static void main(String[] args) {
    String str = "email1@gmail.com,'email2@gmail.com,email3@gmail.com, email4@gmail.com'" +
            ", 'email5@gmail.com ,email6@gmail.com'";

    Matcher m = Pattern.compile("\\w+@\\w+.com").matcher(str);
    List<String> emailsList = new ArrayList<>();

    while (m.find()){
        emailsList.add(m.group());
    }

    String[]emailsArray = emailsList.toArray(new String[0]);  // if really need an array
    System.out.println(Arrays.toString(emailsArray));
}

I used a List at first because it's very easy to add element dunamiclly, you can't with an array, but at the, end you still can use an array with the code I wrote 我起初使用List是因为它很容易地添加元素,您不能使用数组,但是最后,您仍然可以将数组与我编写的代码一起使用


And this will print : 这将打印:

[email1@gmail.com, email2@gmail.com, email3@gmail.com, email4@gmail.com, email5@gmail.com, email6@gmail.com]

Regex demo & Code demo Regex demoCode demo

Why don't you just do?: 您为什么不这样做?:

String noQuotesStr = str.replace("'", ""); //removes '
String[] newArray = noQuotesStr.split(",");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM