[quote]java解析替换[/quote]
[quote]正则替换[/quote]
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;
}
[quote]正则替换[/quote]
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=