java以及sql中动态的去除url中指定参数
项目场景:
今儿遇到个动态去除URL参数的问题,搞了半天,记录记录吧!
问题描述:
Java以及mySql语言动态去除url中指定参数
例如:https://blog.csdn.net/YiyeLbj/article/details/121724960?not_checkout=1&articleId=121725013
我要根据参数名称articleId去除&articleId=121725013
去除后的URL:https://blog.csdn.net/YiyeLbj/article/details/121724960?not_checkout=1
解决方案:话不多说直接看
JAVA实现
// 去除Url中指定的参数字段
public static void main(String[] args) {
String itemUrl = "https://blog.csdn.net/YiyeLbj/article/details/121724960?not_checkout=1&articleId=121725013&rlmid=2";
ArrayList<String> names = new ArrayList<>();
names.add("articleId");
names.add("rlmid");
names.add("not_checkou");
String newUrl = removeParam(itemUrl, names);
System.out.println(newUrl);
}
/**
* 去除Url中指定的参数字段
* @param url 需要去参的url
* @param name 参数名称
* @return
*/
private static String removeParam(String url, List<String> name) {
for (String s : name) {
// 使用replaceAll正则替换,replace不支持正则
url = url.replaceAll("&?" + s + "=[^&]*", "");
}
return url;
}
结果:https://blog.csdn.net/YiyeLbj/article/details/121724960
SQL实现
SELECT
regexp_replace("https://blog.csdn.net/YiyeLbj/article/details/121724960?not_checkout=1&articleId=121725013&rlmid=2","&?rlmid=[^&]*",'')
AS new_page_url
FROM urlTable;
核心:
用法:regexp_replace(source, pattern, replace_string, occurrence)
参数说明:
● source: string类型,要替换的原始字符串。
● pattern: string类型常量,要匹配的正则模式,pattern为空串时抛异常。
● replace_string:string,将匹配的pattern替换成的字符串。
吃水不忘挖井人:
参考来源:
https://www.cnblogs.com/linyufeng/p/13502230.html