引用
java解析替换
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=babi true http://a.b.com?a=1&access_token=babi&b=2 http://a.b.com?a=1&access_token=babi&b=2 true http://a.b.com?a=1&access_token=babi&b=2&d= http://a.b.com?a=1&access_token=babi&b=2&d=