在Java/Android中从URL中获取域名

9

在我的应用程序中,我需要从URL中获取favicon.ico文件(例如:http://google.com/favicon.ico)。

用户可以输入各种URL,但我只需要域名。

示例:

http://drive.google.com/bla/bla/bla -> drive.google.com

www.facebook.com/lol -> www.facebook.com

192.168.0.1 -> 192.168.0.1 (but not really necessary)

有人有获取这个的方法吗? 谢谢!


2
你不能将它包装在一个Url对象中并使用getHost()方法吗? - peshkira
1个回答

40

尝试使用类似以下的内容:

String u = "www.facebook.com/lol";
URL url = new URL(u);
String host = url.getHost(); // should be www.facebook.com

如果您需要获取Url的不同部分,请查看文档和此处的其他getter:http://developer.android.com/reference/java/net/URL.html


请查看文档 ;) java.net.URL - peshkira
这将会给你一个格式错误的异常。解决方案:https://dev59.com/Xmkw5IYBdhLWcg3w2-Ik#40405173 - cegprakash
@cegprakash 如果你能捕捉到它,那就不会出现这种情况。你提出的解决方案将无法匹配许多有效的顶级域名。 - peshkira
@cegprakash 这个统计数据从哪里得来?如果您不能捕获大多数顶级域名,为什么正则表达式是唯一可行的解决方案? - peshkira
1
“不会匹配许多有效的顶级域名...” 请问有人可以解释一下这是什么意思或者举个例子吗?哪些域名不能与此答案中的代码配合使用?而且50%的错误URL数量从何而来? - David Rector
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接