[英]How to filter a String in java with specific range (email format)
我在Java中有一个名为Kiran<kiran@gmail.com>
的字符串。 我想通过删除其他内容来获取String只是kiran@gmail.com。
String s1= kiran<kiran@gmail.com>
输出应为kiran@gmail.com
请帮我解决这个问题。
如果您尝试解析电子邮件地址,建议您使用InternetAddress类。 它是Java EE的一部分(如果使用的是Java SE,则需要添加javax.mail依赖项)。
该类可以解析包含您的电子邮件地址的字符串。
String s1 = "kiran<kiran@gmail.com>";
InternetAddress address = new InternetAddress(s1);
String email = address.getAddress();
我认为这样:
您可以执行以下操作。
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.