Java 字符串占位格式化

时间:2024-10-19 20:57:11

        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 提供了更多的灵活性和功能。