我有这个网站:
https://asd.com/somestuff/another.html
我想从中提取相关部分:
somestuff/another.html
我该怎么做?
编辑:我得到了一个问题的答案,但问题是建立了亲属的绝对网址,这不是我感兴趣的。答案 0 :(得分:7)
您可以使用URL
对象的getPath()
方法:
URL url = new URL("https://asd.com/somestuff/another.html");
System.out.println(url.getPath()); // prints "/somestuff/another.html"
现在,这只会带来实际路径。如果您需要更多信息(锚点或作为获取值传递的参数),您需要调用URL
对象的其他访问者:
URL url = new URL("https://asd.com/somestuff/another.html?param=value#anchor");
System.out.println(url.getPath()); // prints "/somestuff/another.html"
System.out.println(url.getQuery()); // prints "param=value"
System.out.println(url.getRef()); // prints "anchor"
,可能会在没有太多代码的情况下生成相对网址
URL absolute = new URL(url, "/");
String relative = url.toString().substring(absolute.toString().length());
System.out.println(relative); // prints "somestuff/another.html?param=value#anchor"
答案 1 :(得分:2)
如果您知道该域名将永远是.com,那么您可以尝试这样的事情:
String url = "https://asd.com/somestuff/another.html";
String[] parts = url.split(".com/");
//parts[1] is the string after the .com/
答案 2 :(得分:1)
URL由以下元素组成(请注意,省略了一些可选元素): 1)计划 2)主机名 3)[端口] 4)路径 5)查询 6)片段 使用Java URL API,您可以执行以下操作:
URL u = new URL("https://randomsite.org/another/randomPage.html");
System.out.println(u.getPath());
编辑#1 如果您的网址中包含查询元素,请参阅Chop的答案,例如
?name=foo&value=bar
使用getQuery()
方法不会返回资源路径,只返回查询部分。
答案 3 :(得分:1)
试试这个
全球使用它不仅适用于.com
URL u=new URL("https://asd.in/somestuff/another.html");
String u1=new URL(u, "/").toString();
String u2=u.toString();
String[] u3=u2.split(u1);
System.out.println(u3[1]); //it prints: somestuff/another.html
答案 4 :(得分:1)
您可以使用以下代码段执行此操作。
String str="https://asd.org/somestuff/another.html";
if(str.contains("//")) //To remove any protocol specific header.
{
str=str.split("//")[1];
}
System.out.println(str.substring(str.indexOf("/")+1)); // taking the first '/'
答案 5 :(得分:0)
我基于java.net.URI
的解决方案
URI _absoluteURL = new URI(absoluteUrl).normalize();
String root = _absoluteURL.getScheme() + "://" + _absoluteURL.getAuthority();
URI relative = new URI(root).relativize(_absoluteURL);
String result = relative.toString();