我正在阅读包含网址的文件,例如http://www.espncricinfo.com/netstorage/817215.json?xhr=1),如何在第3个(' /')之前获取类似(http://www.espncricinfo.com/)的字符串。
答案 0 :(得分:1)
一种方法:使用RegEx
,
String link = "http://www.espncricinfo.com/netstorage/817215.json?xhr=1";
Pattern pattern = Pattern.compile("((https?://)[^/]+/?)");
Matcher matcher = pattern.matcher(link);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
更好的方法:使用URL
包:
URL url = new URL(link);
System.out.println(url.getHost());
答案 1 :(得分:0)
最简单的方法似乎是创建URL对象并从中获取主机名
String url = "http://www.espncricinfo.com/netstorage/817215.json?xhr=1";
URL u = new URL(url);
System.out.println(u.getHost());
答案 2 :(得分:0)
使用java.net.URL:
URL url = new URL("http://www.espncricinfo.com/netstorage/817215.json?xhr=1");
String before_3rd = url.getProtocol() +"://" + url.getHost() + url.getPort();
答案 3 :(得分:0)
您可以使用URI
方法resolve
:
URI uri = URI.create("http://www.espncricinfo.com/netstorage/817215.json?xhr=1&a=b");
String result = uri.resolve("/").toString();
此方法基本上使用您的原始URI作为计算具有不同路径的类似URI的基础。通过给它路径"/"
,这意味着你将获得原始的基本URI(包括用户信息或端口,如果它们在那里)。打印上面的结果将给出:
http://www.espncricinfo.com/
如果您的原始网址是:
http://user:pass@www.espncricinfo.com:8080/netstorage/817215.json?xhr=1
结果将是:
http://user:pass@www.espncricinfo.com:8080/