package com.zhgd.xmgl.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class StrUtils { /** * 去掉前面第几个/取后面部分,a/b/c/d...写一个方法,得到c/d.... * 例如: * - 输入 "a/b/c/d",返回 "c/d" * - 输入 "single", "/", "", null,返回 null * * @param path 输入的路径字符串 * @param cutNum 去掉前面第几个/ */ public static String getLastSegments(String path, int cutNum) { // 1. 处理 null 或空字符串 if (StrUtil.isBlank(path)) { return null; } // 2. 分割路径并过滤空字符串 // StrUtil.split(path, '/') 会根据斜杠分割。 // 例如: "/a/b" -> ["", "a", "b"] // "a/b/" -> ["a", "b", ""] // "a//b" -> ["a", "", "b"] // 我们需要过滤掉这些空字符串,只保留有效的路径段。 List validSegments = Arrays.stream(path.split("/")) .filter(StrUtil::isNotBlank) // 过滤掉空字符串和null .collect(Collectors.toList()); // 3. 检查有效路径段的数量 if (validSegments.size() < cutNum) { // 如果不足两部分,则无法形成 "c/d" 结构 return null; } // 5. 拼接结果 return String.join("/", CollUtil.sub(validSegments, cutNum, validSegments.size())); } }