如何提取URL字符串标签、检查深度并获取父路径与祖父路径?
处理URL层级、父路径与祖父路径的实现方案
核心思路
- 以
/为分隔符拆分URL字符串,得到各路径段的数组 - 层级深度直接等于数组的长度
- 父路径:移除数组最后一个元素后重新拼接
- 祖父路径:移除数组最后两个元素后重新拼接(需处理层级不足的边界情况)
Java代码实现
public class UrlPathProcessor { public static void main(String[] args) { String url = "ricsglobal:content/category/news-and-insight/type/wbef"; String[] pathSegments = url.split("/"); // 获取层级深度 int depth = pathSegments.length; System.out.println("URL层级深度: " + depth); // 获取父路径 String parentPath = buildPath(pathSegments, pathSegments.length - 1); System.out.println("父路径: " + parentPath); // 获取祖父路径 String grandparentPath = buildPath(pathSegments, pathSegments.length - 2); System.out.println("祖父路径: " + grandparentPath); } // 通用路径拼接方法,截取前n个路径段 private static String buildPath(String[] segments, int endIndex) { if (endIndex <= 0) { return segments.length == 0 ? "" : segments[0]; } StringBuilder pathBuilder = new StringBuilder(); for (int i = 0; i < endIndex; i++) { if (i != 0) { pathBuilder.append("/"); } pathBuilder.append(segments[i]); } return pathBuilder.toString(); } }
代码说明
- 拆分URL后,示例的路径段数组为
["ricsglobal:content", "category", "news-and-insight", "type", "wbef"],层级深度为5 - 父路径截取前4个段,拼接结果为
ricsglobal:content/category/news-and-insight/type - 祖父路径截取前3个段,拼接结果为
ricsglobal:content/category/news-and-insight,符合预期 - 通用
buildPath方法统一处理路径拼接,同时兼容层级不足的情况(比如URL只有2段时,祖父路径直接返回原URL)
内容的提问来源于stack exchange,提问作者Niraj Kumar Singh
相关产品推荐
相关产品推荐

