Java 从 url 获取电子邮件地址
Java get email address from url
我有这个 url mailto:email@gmail.com?subject=...
我想提取电子邮件地址。
我已经这样做了:
String[] s = url.split("[:?]");
它有效,但我对这个解决方案不满意。
有没有办法使用正则表达式或比我所做的更好的方法来做到这一点?
您可以尝试只提取
protocol:path?query
^^^^
部分与 URL#getPath
String email= new URL("mailto:email@gmail.com?subject").getPath();
System.out.println(email);
输出:email@gmail.com
但您也可以简单地使用第一个 :
和第一个 ?
的位置来确定您应该在哪里切割字符串。
String data = "mailto:email@gmail.com?subject";
int colonIndex = data.indexOf(':')+1;
int questionMarkIndex = data.indexOf('?',colonIndex);
String email = null;
if (questionMarkIndex>colonIndex){
email = data.substring(colonIndex,questionMarkIndex);
}else{//there was no `?` after `:`
email = data.substring(colonIndex);
}
System.out.println(email);
但实际上我不确定你为什么对split("[:?]")
“不开心”。这是非常好的解决方案:
String data = "mailto:email@gmail.com?subject";
String email = data.split("[:?]")[1];
System.out.println(email);
这也将处理末尾没有 ?
的情况。
使用 URL class 并调用 getPath 方法。
例如:
URL url = new URL("mailto:email@gmail.com?subject=foo");
String email = url.getPath();
我有这个 url mailto:email@gmail.com?subject=...
我想提取电子邮件地址。
我已经这样做了:
String[] s = url.split("[:?]");
它有效,但我对这个解决方案不满意。
有没有办法使用正则表达式或比我所做的更好的方法来做到这一点?
您可以尝试只提取
protocol:path?query
^^^^
部分与 URL#getPath
String email= new URL("mailto:email@gmail.com?subject").getPath();
System.out.println(email);
输出:email@gmail.com
但您也可以简单地使用第一个 :
和第一个 ?
的位置来确定您应该在哪里切割字符串。
String data = "mailto:email@gmail.com?subject";
int colonIndex = data.indexOf(':')+1;
int questionMarkIndex = data.indexOf('?',colonIndex);
String email = null;
if (questionMarkIndex>colonIndex){
email = data.substring(colonIndex,questionMarkIndex);
}else{//there was no `?` after `:`
email = data.substring(colonIndex);
}
System.out.println(email);
但实际上我不确定你为什么对split("[:?]")
“不开心”。这是非常好的解决方案:
String data = "mailto:email@gmail.com?subject";
String email = data.split("[:?]")[1];
System.out.println(email);
这也将处理末尾没有 ?
的情况。
使用 URL class 并调用 getPath 方法。
例如:
URL url = new URL("mailto:email@gmail.com?subject=foo");
String email = url.getPath();