[英]How to filter a String in java with specific range (email format)
I have a String in Java called Kiran<kiran@gmail.com>
. 我在Java中有一个名为Kiran<kiran@gmail.com>
的字符串。 I want to get String just kiran@gmail.com by removing other content. 我想通过删除其他内容来获取String只是kiran@gmail.com。
String s1= kiran<kiran@gmail.com>
Output should be kiran@gmail.com
输出应为kiran@gmail.com
Please help me out in solving this. 请帮我解决这个问题。
If you are trying to parse email addresses, I'd recommend to use the InternetAddress class. 如果您尝试解析电子邮件地址,建议您使用InternetAddress类。 It is part of Java EE (if you are using Java SE you need to add the javax.mail dependency). 它是Java EE的一部分(如果使用的是Java SE,则需要添加javax.mail依赖项)。
That class is able to parse an String containing an email address like yours. 该类可以解析包含您的电子邮件地址的字符串。
String s1 = "kiran<kiran@gmail.com>";
InternetAddress address = new InternetAddress(s1);
String email = address.getAddress();
I think this way: 我认为这样:
You can do the following thing. 您可以执行以下操作。
String s = "To: John Smith <john@smith.com>, Janes Smith\n"
+ "<jane@smith.org>, Tom Barter <tom@test.co.uk>, Other \n"
+ "Weird @#$@<>#^Names <other@names.me>, \n"
+ "Long Long Long Long Name <longlong@name.com>";
s = s.substring(3); // filter TO:
System.out.println(s);
// Use DOTALL pattern
Pattern p = Pattern.compile("(.*?)<([^>]+)>\\s*,?",Pattern.DOTALL);
Matcher m = p.matcher(s);
while(m.find()) {
// filter newline
String name = m.group(1).replaceAll("[\\n\\r]+", "");
String email = m.group(2).replaceAll("[\\n\\r]+", "");
System.out.println(name + " -> " + email);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.