【问题标题】:Get domain name from URL without java.net in Java在 Java 中从没有 java.net 的 URL 获取域名
【发布时间】:2015-04-17 08:28:40
【问题描述】:

我想知道在 GWT 中是否有一种简单的方法可以在没有 java.net.* 的情况下从 url 获取主机名;由于客户端不支持这个包。

Input ejw.example.com/anotherexample?fun=no
output example.com

Input https://www3.example.com/yeteagainanotherexample?fun=miserable
output example.com

【问题讨论】:

  • ejw.example.comwww3.example.comexample.com都是不同的域名。
  • 我的意思是主机。如果存在,我正在寻找一种内置方法。
  • 它们也是不同的主机名 :),因为它们可以 - 并且经常这样做 - 解析到不同的 IP 地址。您在示例中寻找的是二级域名,但您必须确保这确实是您所需要的。
  • 正确。二级域名。我会编写自己的方法,但如果有一个内置类可以替代 java.net,那就太好了。
  • 您可能会发现这个问题的答案非常有帮助:stackoverflow.com/questions/4452916/…

标签: java gwt


【解决方案1】:
com.google.gwt.user.client.Window.Location.getHost()

【讨论】:

    【解决方案2】:

    尝试使用com.google.gwt.regexp.shared.RegExp,它用于具有 Javascript 的 RegExp 等功能的正则表达式,以及 Javascript 字符串的替换和拆分方法(可以采用 RegExp 参数)。

    尝试下面的正则表达式,它捕获第一个点和第一个正斜杠之间的所有内容,并在匹配索引 1 处获取它。

    https*://\w+\.(.*?)/
    

    这是debuggexregexr 的演示

    示例代码:

    String url="https://www3.example.com/yeteagainanotherexample?fun=miserable";
    
    System.out.println(RegExp.compile("https*://\\w+\\.(.*?)/").exec(url).getGroup(1));
    

    注意:我不擅长正则表达式,所以请根据需要更改正则表达式模式。阅读更多关于

    【讨论】:

    • 你认为他为什么需要自己的域名?我认为 OP 是在谈论一般的 URL。
    • 而且你没有提供OP要找的二级域名。
    • blog.inside.example.co.uk 怎么样?您的正则表达式失败。域名最多可以有 127 个点。
    • @AndreiVolgin 抱歉,我对 URL 域名知之甚少。这只是一个例子。正则表达式可以修改或简单地使用 String#split() 方法。
    • String.splt() 也不是微不足道的,因为您需要区分blog.example.com 和 `blog.example.com.me" - 只是为了弥补一个例子。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2019-09-10
    • 2010-10-08
    相关资源
    最近更新 更多