当前位置: 首页 > 面试题库 >

从URL获取域名/主机名的最快方法是什么?

应和光
2023-03-14
问题内容

我需要浏览大量的字符串URL,并从中提取域名。

例如:

**http://www.codingdict.com/questions 将提取 **www.codingdict.com

我最初使用的new URL(theUrlString).getHost()是URL对象初始化,但是却为该过程增加了很多时间,而且似乎是不必要的。

有没有一种更快的方法来提取可靠的主机名?

谢谢

编辑: 我的错,是的www。将包含在上面的域名示例中。此外,这些网址可能是http或https


问题答案:

如果您想处理https等,我建议您执行以下操作:

int slashslash = url.indexOf("//") + 2;
domain = url.substring(slashslash, url.indexOf('/', slashslash));

请注意,这实际上包括了域名的www一部分(就像URL.getHost()这样做一样)。

编辑通过评论请求

以下是两种可能有用的方法:

/**
 * Will take a url such as http://codingdict.com and return www.codingdict.com
 * 
 * @param url
 * @return
 */
public static String getHost(String url){
    if(url == null || url.length() == 0)
        return "";

    int doubleslash = url.indexOf("//");
    if(doubleslash == -1)
        doubleslash = 0;
    else
        doubleslash += 2;

    int end = url.indexOf('/', doubleslash);
    end = end >= 0 ? end : url.length();

    int port = url.indexOf(':', doubleslash);
    end = (port > 0 && port < end) ? port : end;

    return url.substring(doubleslash, end);
}


/**  Based on : http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/android/webkit/CookieManager.java#CookieManager.getBaseDomain%28java.lang.String%29
 * Get the base domain for a given host or url. E.g. mail.google.com will return google.com
 * @param host 
 * @return 
 */
public static String getBaseDomain(String url) {
    String host = getHost(url);

    int startIndex = 0;
    int nextIndex = host.indexOf('.');
    int lastIndex = host.lastIndexOf('.');
    while (nextIndex < lastIndex) {
        startIndex = nextIndex + 1;
        nextIndex = host.indexOf('.', startIndex);
    }
    if (startIndex > 0) {
        return host.substring(startIndex);
    } else {
        return host;
    }
}


 类似资料:
  • 问题内容: 在我的Django应用中,我需要从引荐来源网址中获取主机名及其协议,以便从类似以下网址的网址中获取: https://docs.google.com/spreadsheet/ccc?key=blah-blah-blah-blah#gid=1 https://stackoverflow.com/questions/1234567/blah-blah-blah-blah http://ww

  • 问题内容: 给定一个URL,我想提取域名(它不应包含“ www”部分)。网址可以包含h​​ttp / https。这是我编写的Java代码。尽管它似乎运行良好,但是有没有更好的方法或有一些极端的情况可能会失败。 输入:http : //google.com/blah 输出:google.com 问题答案: 如果要解析URL,请使用java.net.URI。 java.net.URL有很多问题-它的

  • 问题内容: 我需要编写一个函数来解析包含域名的变量。最好用一个示例来说明,变量可以包含以下任何内容: 但是当通过我的函数传递时,所有这些都必须返回example.com或example.co.uk,基本上是根域名。我敢肯定我之前已经做过,但是我已经搜索Google约20分钟了,找不到任何东西。任何帮助,将不胜感激。 编辑:忽略.co.uk,假定通过此功能的所有域都具有3个字母的TLD。 问题答案:

  • 问题内容: 以下哪种方法是用Java获取当前计算机的主机名的最佳,最便捷的方法? 与 问题答案: 严格来说- 在Unix 上,你别无选择,只能调用或。这是你的计算机的名称。任何通过这样的IP地址来确定主机名的尝试 在某些情况下注定会失败: IP地址可能无法解析为任何名称。错误的DNS设置,错误的系统设置或错误的提供程序设置可能是造成此问题的原因。 DNS中的名称可以具有许多称为CNAME的别名。这

  • 问题内容: 我的网址可以是以下任何一种格式: 本质上,我需要能够匹配任何常规URL。我如何 通过一个正则表达式从所有这些文件中提取(或.net,无论tld刚好是什么。我需要它与任何TLD一起使用)? 问题答案: 好了,您可以用来获取主机: 然后,您可以做一些有趣的事情,仅获取TLD和主机 不是很优雅,但应该可以。 如果您想要一个解释,请按照以下步骤进行: 首先,我们使用的功能来抓取方案之间的所有内

  • 我想通过IP地址获得远程机器/主机名。我找到了很多答案,如nslookup、host、resloveip等。但是我仍然无法从我的目标机器(中央操作系统,ubuntu等)获得主机名似乎需要注册到DNS服务器? 我有一台名为test的机器,使用IP 10.1.27.97 但是我用了上面的方法还是不能得到“测试” 有人能帮我得到主机名表单IP地址吗?