1.正则表达式
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringTest {
public static void main(String[] args) {
Map valuesMap = new HashMap();
valuesMap.put("animal", "the fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}. ";
String middleResult = processTemplate(templateString, valuesMap);
System.out.println(middleResult);
}
public static String processTemplate(String template, Map<String, Object> params){
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\$\\{\\w+\\}").matcher(template);
while (m.find()) {
String param = m.group();
Object value = params.get(param.substring(2, param.length() - 1));
m.appendReplacement(sb, value==null ? "" : value.toString());
}
m.appendTail(sb);
return sb.toString();
}
}
2.工具类替换
Map valuesMap = HashMap();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);
StrSubstitutor在apache的commons-lang3包中,要使用,请在pom.xml里加入如下依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
3. java.text.MessageFormat
Object[] params = new Object[]{"hello", "!"};
String msg = MessageFormat.format("{0} world {1}", params);
4.java.lang.String
String s = String.format("My name is %s. I am %d.", "Andy", 18);
参考文章: