46 lines
1.5 KiB
Java
46 lines
1.5 KiB
Java
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<String> 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()));
|
||
}
|
||
}
|