diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatService.java b/src/main/java/com/alibaba/druid/stat/DruidStatService.java index 894a9d0cbc..e76072efaa 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidStatService.java +++ b/src/main/java/com/alibaba/druid/stat/DruidStatService.java @@ -149,7 +149,7 @@ public final class DruidStatService implements DruidStatServiceMBean { } if (url.startsWith("/weburi-") && url.indexOf(".json") > 0) { - String uri = StringUtils.subString(url, "weburi-", ".json"); + String uri = StringUtils.subString(url, "weburi-", ".json", true); return returnJSONResult(RESULT_CODE_SUCCESS, getWebURIStatData(uri)); } diff --git a/src/main/java/com/alibaba/druid/util/StringUtils.java b/src/main/java/com/alibaba/druid/util/StringUtils.java index 5252c4d025..ed16734f15 100644 --- a/src/main/java/com/alibaba/druid/util/StringUtils.java +++ b/src/main/java/com/alibaba/druid/util/StringUtils.java @@ -60,6 +60,33 @@ public class StringUtils { } + /** + * Example: subString("abcdc","a","c",true)="bcd" + * + * @param src + * @param start null while start from index=0 + * @param to null while to index=src.length + * @param toLast true while to index=src.lastIndexOf(to) + * @return + */ + public static String subString(String src, String start, String to, boolean toLast) { + if(!toLast) { + return subString(src, start, to); + } + int indexFrom = start == null ? 0 : src.indexOf(start); + int indexTo = to == null ? src.length() : src.lastIndexOf(to); + if (indexFrom < 0 || indexTo < 0 || indexFrom > indexTo) { + return null; + } + + if (null != start) { + indexFrom += start.length(); + } + + return src.substring(indexFrom, indexTo); + + } + /** * @param in * @return