java替换指定url里的参数值

引用
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=

猜你喜欢

转载自asflex.iteye.com/blog/2002047