我需要浏览大量的字符串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”部分)。网址可以包含http / 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地址吗?