代码之家  ›  专栏  ›  技术社区  ›  Ale

Java从url获取电子邮件地址

  •  -2
  • Ale  · 技术社区  · 9 年前

    我有这个网址 mailto:email@gmail.com?subject=... 我想提取电子邮件地址。

    我已经做到了:

    String[] s = url.split("[:?]");
    

    它有效,但我对这个解决方案不满意。

    有没有一种方法可以使用正则表达式或比我所做的更好的方法来实现这一点?

    2 回复  |  直到 9 年前
        1
  •  3
  •   Pshemo    9 年前

    您只能尝试提取

    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);
    

    这也将处理没有 ? 最后。

        2
  •  1
  •   Claudio Corsi    9 年前

    使用URL类并调用getPath方法。

    例如:

    URL url = new URL("mailto:email@gmail.com?subject=foo");
    String email = url.getPath();