【问题标题】:In Java, how to delete everything after .com or .net在 Java 中,如何删除 .com 或 .net 之后的所有内容
【发布时间】:2013-05-31 13:57:09
【问题描述】:

我正在尝试从如下所示的日志文件中获取域名 (http://www.example.com):

http://maps.google.com/maps?hl=en&tab=wl
http://l.macys.com/simi-valley-ca?cm_mmc=macys_     
https://www.google.co.in/       
https://www.google.ca/  

我只想

http://maps.google.com/   
http://l.macys.com/    
https://www.google.co.in/   
https://www.google.ca/  

有什么想法吗?

【问题讨论】:

    标签: java domain-name


    【解决方案1】:

    怎么样

    URL url = new URL("http://maps.google.com/maps?hl=en&tab=wl");
    System.out.println(url.getProtocol()+"://"+url.getHost());
    

    输出

    http://maps.google.com
    

    【讨论】:

    • 既然reg-ex这个答案被删了,我还是提一下吧。 reg-ex 解决方案不是很复杂,因为它的复杂性(除非我只是一个 reg-ex 鱼),而且它会随着 orgedu 等的添加而增长?
    • 那么我如何使用正则表达式来做到这一点?
    • @cevallos.valtira 现在已删除的答案之一包含此代码,它可以为您工作String truncated = orig.replaceAll("(?<=[.](com|net)).*$", "");,但在 Java 为您提供专为此类地址操作而设计的工具的情况下使用正则表达式似乎有点矫枉过正,这可能是作者决定删除他的答案的原因。
    • 有没有办法只获取 google 而不是 maps.google.com 或 www.google.com?谢谢
    • @cevallos.valtira 我不确定仅使用 URL 类是否可行。您可能应该在 SO 上创建有关它的新问题。
    【解决方案2】:

    如果你不想自己处理,那么一个完整的证明方法如下:

    URL url = new URL("http://l.macys.com/simi-valley-ca?cm_mmc=macys_");
        System.out.println(url.getProtocol() + "://" + url.getHost() + ((url.getPort()==-1)?"" : ":" + url.getPort()) + "/" );
    

    如果你确定永远不会有端口类型的url,你可以跳过url.getPort!!

    干杯

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2015-06-03
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多