[英]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+.com
: multipleWordCharacter@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]
Why don't you just do?: 您为什么不这样做?:
String noQuotesStr = str.replace("'", ""); //removes '
String[] newArray = noQuotesStr.split(",");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.