java替换指定url里的参数值
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;}
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 url = "http://a.b.com?access_token=3221342231233=&";String url1 = "http://a.b.com?a=1&access_token=323";String url2 = "http://a.b.com?a=1&access_token=323&b=2";String url3 = "http://a.b.com?a=1&access_token=323acesstoken=&b=2&d=";List<String> strs = new ArrayList<String>();strs.add(url);strs.add(url1);strs.add(url2);strs.add(url3);String paramName = "access_token";for(String str : strs) {String nac = "babi";String s0 = replaceAccessToken(str, paramName, nac);String s1 = replaceAccessTokenReg(str, paramName, nac);System.out.println(s0.equals(s1) + " " + s0 + " " + s1);}
true http://a.b.com?access_token=babi& http://a.b.com?access_token=babi&true http://a.b.com?a=1&access_token=babi http://a.b.com?a=1&access_token=babitrue http://a.b.com?a=1&access_token=babi&b=2 http://a.b.com?a=1&access_token=babi&b=2true http://a.b.com?a=1&access_token=babi&b=2&d= http://a.b.com?a=1&access_token=babi&b=2&d=