Java 提供了几种方式来处理字符串占位符,最常用的是 String 类的 format 方法和 MessageFormat 类。以下是这两种方法的详细说明和示例。
1、String.format
基本语法:
String formatted = String.format("格式字符串", 参数1, 参数2, ...);
占位符 %s:字符串 ,%d:十进制整数,%f:浮点数,%t:日期/时间,%b:布尔值,%x 或 %X:十六进制整数
示例:
public class FormatExample {
public static void main(String[] args) {
String name = "Alice";
int age = 30;
double height = 1.65;
boolean isStudent = false;
// 基本占位符
String result1 = String.format("Name: %s, Age: %d, Height: %.2f, Student: %b",
name, age, height, isStudent);
System.out.println(result1); // 输出: Name: Alice, Age: 30, Height: 1.65, Student: false
// 日期和时间
java.util.Date now = new java.util.Date();
String result2 = String.format("Current date and time: %tF %tT", now, now);
System.out.println(result2); // 输出: Current date and time: YYYY-MM-DD HH:MM:SS
}
}
2、MessageFormat
基本语法同上,但是占位符换成了 {0}、{1}、{2} 等:按顺序替换参数
示例:
import java.text.MessageFormat;
public class MessageFormatExample {
public static void main(String[] args) {
String name = "Alice";
int age = 30;
double height = 1.65;
boolean isStudent = false;
// 基本占位符
String result1 = MessageFormat.format("Name: {0}, Age: {1}, Height: {2,number,#.##}, Student: {3}",
name, age, height, isStudent);
System.out.println(result1); // 输出: Name: Alice, Age: 30, Height: 1.65, Student: false
// 复数形式
int count = 1;
String result2 = MessageFormat.format("You have {0,choice,0#no items|1#one item|1<#{0} items}", count);
System.out.println(result2); // 输出: You have one item
count = 3;
result2 = MessageFormat.format("You have {0,choice,0#no items|1#one item|1<#{0} items}", count);
System.out.println(result2); // 输出: You have 3 items
}
}
注意事项:
MessageFormat 单引号连占位符引起占位符失效解决方案_messageformat.format 单引号-****博客
MessageFormat格式化千位数以上数字出现逗号_messageformat 数字会加逗号-****博客
总结:
选择哪种方法取决于你的具体需求。如果你只需要简单的字符串替换和基本格式化,String.format 是一个很好的选择。如果你需要处理更复杂的格式化逻辑,MessageFormat 提供了更多的灵活性和功能。