假设我在网页上
https://company.slack.com/messages/@user1/
如何在Java / Python中获取公司/网站主页的URL https://slack.com/
(在这种情况下)
现在这对某些情况来说似乎很容易,但我想概括一下这个&无法覆盖像slack / google_design / etc那样的所有情况......
说类似的案例是:
https://www.youtube.com/watch?v=deL9VeNjcH8
预期输出:https://www.youtube.com
https://angel.co/weav-music?utm_source=lb
预期输出:https://angel.co
https://design.google.com/
预期输出:https://www.google.com
以下链接中的代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "https://angel.co/weav-music?utm_source=lb";
int cnt=0;
int p;
int l=s.length();
for(int i=0;i<l;i++)
{
if(s[i]=='/' && cnt!=3)
cnt++;
if(s[i]=='/' && cnt==3){
p=i;break;}
}
cout<<s.substr(0,p);
return 0;
}
@all 请参阅JonasCz关于他自己的回答的第二条评论实际上有所帮助 我
答案 0 :(得分:1)
您可以使用以下内容:
URL aURL = new URL("https://company.slack.com/messages/@user1/");
System.out.println(aURL.getProtocol() + "://" + aURL.getHost());
打印哪些:
https://company.slack.com
这也适用于其他网址。有关详细信息,请参阅the docs。
如果您只想获得没有子域名的主域名(即只有http://slack.com
),您可以use Guava's InternetDomainName,例如。像这样:
InternetDomainName.from("company.slack.com").topPrivateDomain().name();
以上内容将返回slack.com
。
上述方法调用适用于较旧的Guava库版本。对于Guava 19.0,使用 toString()而不是 .name()
要完成,在您的情况下,整个代码将如下所示:
URL aURL = new URL("https://company.slack.com/messages/@user1/");
InternetDomainName.from(aURL.getHost()).topPrivateDomain().name();