赞
踩
开发中我们常常要使用变量,这些变量需要根据不同的需求进行一些处理。我们今天来介绍几个使用Java替换字符串占位符的方法。
代码示例如下:
import org.apache.commons.lang.text.StrSubstitutor;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
//方法一
String url = "jdbc:mysql://{ip}:{port}/{tenantCode}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai";
String context = url.replace("{ip}", "127.0.0.1").replace("{port}", "3306").replace("{tenantCode}", "test001");
System.out.println(context);
//方法二
String url1 = "jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai";
String context1 = String.format(url1, "127.0.0.1", "3306", "test001");
System.out.println(context1);
//方法三
String url2 = "jdbc:mysql://{0}:{1}/{2}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai";
String context2 = MessageFormat.format(url2, "127.0.0.1", "3306", "test001");
System.out.println(context2);
//方法四-需要引用commons-lang3或commons-text包
Map map = new HashMap<>();
map.put("ip", "127.0.0.1");
map.put("port", "3306");
map.put("tenantCode", "test001");
StrSubstitutor strSubstitutor = new StrSubstitutor(map);
String url3 = "jdbc:mysql://${ip}:${port}/${tenantCode}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai";
String context3 = strSubstitutor.replace(url3);
System.out.println(context3);
}
}
打印结果
jdbc:mysql://127.0.0.1:3306/test001?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc:mysql://127.0.0.1:3306/test001?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc:mysql://127.0.0.1:3306/test001?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc:mysql://127.0.0.1:3306/test001?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
使用正则表达式动态替换字符串
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
// 正则表达式:\ - 需要转义
String regex = "[|/\\\\]";
// 需要替换的字符串,把下面字符串变成 abc,def,ghi,123
String str = "abc|def/ghi\\123";
// 方法一、使用replaceAll
String newStr1 = str.replaceAll(regex, ",");
System.out.println(newStr1);
// 方法二、使用Pattern.split, 再使用String.join
Pattern p = Pattern.compile(regex);
String[] arr = p.split(str);
String newStr2 = String.join(",", arr);
System.out.println(newStr2);
}
}
打印结果
abc,def,ghi,123
abc,def,ghi,123
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。