2 回答

TA貢獻1827條經驗 獲得超9個贊
您可以將 for 循環縮短為此。
int i = 0, t = 0;
for (; i < url.length(); i++) {
if (url.charAt(i) == '/' && ++t == 4) break;
}
return i;
&&是短路,因此++t == 4只有在url.charAt(i) == '/'為真時才會運行。

TA貢獻1848條經驗 獲得超2個贊
一種解決方案是使用正則表達式模式。這種方法會慢一點,但它可以讓您一次性檢查更多案例。起初它似乎更冗長,但如果適應您的需要
private static final Pattern urlPattern = Pattern.compile("^(http(s?)://).*?/.*?/(.*)$");
private static int extractPositionTillContextRootInUrl(String url) {
Matcher matcher = urlPattern.matcher(url);
return matcher.matches() ? matcher.start(3) : -1;
}
另一種解決方案是使用 java.net.URL 對象
private static int extractPositionTillContextRootInUrl(String url) {
try {
return new URL(url).getPath().indexOf("/", 1);
} catch (MalformedURLException e) {
return -1;
}
}
添加回答
舉報