在日常开发中字符串填充占位符的需求很常见。下面来介绍三种方式实现java字符串填充占位符。在Java自带的方法中,你可以使用String.format()
方法或StringBuilder
类来实现字符串的填充占位符。也可以参考打印日志的方式,则需要引入第三方jar包(slf4j-api)来实现。下面介绍三种实现方式
使用String.format
String.format()
方法使用类似于C语言的printf
格式化字符串的方式来填充占位符。
@org.junit.Test
public void format() {
String name = "Soo";
int age = 25;
// 使用 String.format() 方法
String formattedString = String.format("Name: %s, Age: %d", name, age);
System.out.println(formattedString);
}
在上面的例子中,%s
和%d
是占位符,分别表示字符串和整数的位置。String.format()
方法会将这些占位符替换为相应的变量值。
使用StringBuilder
StringBuilder
类允许你通过追加不同的字符串片段来构建最终的字符串。
@org.junit.Test
public void formatStr(){
String name = "Soo";
int age = 25;
// 使用 StringBuilder
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Name: ").append(name).append(", Age: ").append(age);
String result = stringBuilder.toString();
System.out.println(result);
}
使用MessageFormatter
MessageFormatter.format
方法使用需要引入slf4j-api.jar。MessageFormatter
是在org.slf4j.helpers包下的。
@org.junit.Test
public void formatMsg(){
String name = "Soo";
int age = 25;
FormattingTuple formattingTuple = MessageFormatter.format("Name:{},Age:{}",name,age);
System.out.println(formattingTuple.getMessage());
}
在上面的例子中,{}
是占位符,MessageFormatter.format
方法会将这些占位符替换为相应的变量值。
总结
对比三种方式,StringBuilder
可读性不高,字符串一旦长度过长,拼接内容过多的的话,容易出错。String.format
解决了可读性差的问题的,但是不同类型的值需要不同的占位符。MessageFormatter.format
刚好解决了类型的问题,不管什么类型的值都能用{}
代替。但是需要引用第三方jar包去实现。所以在日常开发中,可以根据自己的实际场景去选择实现的方式。