您可以使用 String 类中提供的功能来完成此操作。
这种方法将 URL 分成两部分,“?”之前的部分。和之后的一个(如果没有“?”或参数也可以)。如果“?”之前的 URL 是等价的,就我们的目的而言,两者是“相等的”。
public boolean urlsMatchWithoutQueryParameters(String firstUrl, secondUrl) {
// Get the portion of the URLs before the "?", and before all parameters.
String firstUrlWithoutParameters = firstUrl.split("\\?", 2)[0];
String secondUrlWithoutParameters = secondUrl.split("\\?", 2)[0];
return firstUrlWithoutParameters.equals(secondUrlWithoutParameters);
}
代码有点拥挤,所以你可以做一些事情把 String 逻辑拉到一个帮助器中,如下所示:
public boolean urlsMatchWithoutQueryParameters(String firstUrl, secondUrl) {
return getUrlWithoutParameters(firstUrl).equals(getUrlWithoutParameters(secondUrl));
}
public String getUrlWithoutParameters(String url) {
// Get the portion of the URL before the "?", and before all parameters.
return url.split("\\?", 2)[0];
}
注意:这会忽略 URL 锚点(例如,URL www.example.com/profiles/user123#friends 中的#photos)。
对于锚点,只需替换"\\?"
为"#"
in split("\\?", 2)
。