Bootstrap

切割字符获取URL路径

接着上一篇文章获取的编码后的URL地址,但是后边也避免不了
这一连串的数据

?Expires=1637911586&OSSAccessKeyId=TMP.3KjRewnmoU4wcLHa4q1J5JcDZ43q4wtVGiVwqWgwB1SPC4kvooe9kKAiLQSTikuCcY1spTwKw9ANTPgoAEvDor6eLfpywK&Signature=6fu02tzi8oyUtSDwIlngoXEW5sI%3D

?Expires后边的数据代表链接的有效时间,但是我们不需要后边这段数据,所以需要进行切割
所以需要在?Expires这进行切割
首先判断字段是否存在
不存在就需要切割了,就是没有有效时间限制的

   boolean status = path.contains(str);

从第一个数据切割到出现?的位置

path.substring(0,path.indexOf("?"))

然后就会出现前边一段的数据

https://class-repository.oss-cn-xxx.xxx.com/4/%E8%B6%85%E9%9F%B3%E9%80%9F%E9%A3%9E%E8%A1%8C1.mp4

可是我需要后边这串编码的数据
然后再从后往前切割一段

path1.substring(path1.lastIndexOf("/")+1); //外网

就可以得到我们想要的结果了

%E8%B6%85%E9%9F%B3%E9%80%9F%E9%A3%9E%E8%A1%8C1.mp4

这段是没有有效时间的切割方式
从后往前切割
为啥+1是一位这个切割的获取值是前闭后开的[ 1 ,3);

path.substring(path.lastIndexOf("/") + 1, path.length());

最后附完整代码

public static String getSubToName(String path) {
    String str  = "?Expires";
    boolean status = path.contains(str);
    if(status){
        String path1 =path.substring(0,path.indexOf("?"));
        return path1.substring(path1.lastIndexOf("/")+1); //外网
    }else {
        return path.substring(path.lastIndexOf("/") + 1, path.length()); //内网
    }
}

在这里插入图片描述

;