1.问题如下;
已知字符串url ="adminHeanderMenu.do/action=menu&processId=6898&t=5454654654654",java后台代码发现参数processId里的值不是想要的,需要替换成"6547"?
2.解决办法:
直接上代码吧,SO easy!
方法一:
/**
* java解析代码
*
* @param url
* @param name
* @param accessToken
* @return
*/
public static String replaceAccessToken(String url, String name, String accessToken) {
if (StringUtils.isNotBlank(url) && StringUtils.isNotBlank(accessToken)) {
int index = url.indexOf(name + "=");
if (index != -1) {
StringBuilder sb = new StringBuilder();
sb.append(url.substring(0, index)).append(name + "=").append(accessToken);
int idx = url.indexOf("&", index);
if (idx != -1) {
sb.append(url.substring(idx));
}
url = sb.toString();
}
}
return url;
}
方法二:
/**
* 正则替换
* @param url
* @param name
* @param accessToken
* @return
*/
public static String replaceAccessTokenReg(String url, String name, String accessToken) {
if (StringUtils.isNotBlank(url) && StringUtils.isNotBlank(accessToken)) {
url = url.replaceAll("(" + name + "=[^&]*)", name + "=" + accessToken);
}
return url;
}
测试类:
public static void main(String[] args) {
String test_str = "adminHeanderMenu.do/action=menu&processId=6898&t=5454654654654";
System.out.println("str的长度" + test_str.length());
//调用方法
String replace_str ="processId"; //需要替换的参数
String replace_val = "6547"; //需要替换的值
String result1 = replaceAccessToken(test_str, replace_str, replace_val);
System.out.println("result1="+result1);
String result2 = replaceAccessTokenReg(test_str, replace_str, replace_val);
System.out.println("result2="+result2);
}