猿问

我试图返回索引位置直到上下文根,这是优化的

此方法将接受一个 URl 作为输入并返回位置直到上下文根


 private static int extractPositionTillContextRootInUrl(String url) {

            int t = 0;

            int i = 0;

            for (; i < url.length(); i++) {

                char charAt = url.charAt(i);

                if (charAt == '/') 

                    t++;

                if (t == 4)

                    break;

            }

            return i;

        }


慕哥9229398
浏览 137回答 2
2回答

素胚勾勒不出你

您可以将 for 循环缩短为此。int i = 0, t = 0;for (; i < url.length(); i++) {&nbsp; &nbsp; if (url.charAt(i) == '/' && ++t == 4) break;}return i;&&是短路,因此++t == 4只有在url.charAt(i) == '/'为真时才会运行。

慕尼黑5688855

一种解决方案是使用正则表达式模式。这种方法会慢一点,但它可以让您一次性检查更多案例。起初它似乎更冗长,但如果适应您的需要private static final Pattern urlPattern = Pattern.compile("^(http(s?)://).*?/.*?/(.*)$");private static int extractPositionTillContextRootInUrl(String url) {&nbsp; &nbsp; Matcher matcher = urlPattern.matcher(url);&nbsp; &nbsp; return matcher.matches() ? matcher.start(3) : -1;}另一种解决方案是使用 java.net.URL 对象private static int extractPositionTillContextRootInUrl(String url) {&nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new URL(url).getPath().indexOf("/", 1);&nbsp; &nbsp; &nbsp; &nbsp; } catch (MalformedURLException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答