您的位置:

使用string.format Java格式化字符串

简介

在Java编程中,我们经常会遇到需要格式化字符串的情况,例如输出带有日期时间格式的日志或文件名,显示货币金额等等。在Java 5及以上版本中,Java提供了string.format()方法来实现字符串的格式化,使得程序员可以更加轻松地格式化字符串。

string.format方法

参数和语法

String.format()方法提供了以下几个参数:

String.format(Locale loc, String format, Object... args)
其中:
loc:可选的参数,表示使用的Locale(语言环境)。如果没有提供locale,则使用默认Locale。
format:格式字符串,其中指定了需要替换的内容。
args:动态参数,即需要替换的内容,可以是基本类型、字符串、数组等。 格式字符串中使用百分号(%)标记需要被替换的内容,后面跟上替换内容的格式。格式标记后面还可以跟宽度和精度的标记。具体语法如下:
String.format("%[标记][最小宽度][.精度]转换方式", 参数列表);
下面的小节将详细介绍各个参数和语法。

格式标记

在格式标记中,%字符是必需的,并在每个格式标记中实现以下转换之一:

转换方式 说明
%d 将整数转换为有符号的十进制数。
%o 将整数转换为八进制数。
%x/%X 将整数转换为十六进制数。x表示转换结果中的字母小写,X表示转换结果中字母大写。
%f 将浮点数转换为十进制,默认情况下保留6位小数。
%e/%E 将浮点数转换为科学计数法,e表示转换结果中的字母小写,E表示转换结果中字母大写。
%g/%G 根据值的大小和精度,将浮点数转换为%f或%e。
%c 将整数转换为字符。
%s 将字符串插入字符串中。
%% 插入百分比字符。

宽度和精度

可以通过在格式标记中指定宽度和精度来格式化输出结果。在格式标记中,可以指定宽度参数和精度参数:

//宽度参数
%[标记][最小宽度]转换方式

//精度参数
%[标记][最小宽度][.精度]转换方式
其中,最小宽度是要输出的最少字符数,精度是要输出的小数位数。 下面是一些示例:
String.format("%10d", 101); // 输出结果为 "       101"
String.format("%.2f", 99.99); // 输出结果为 "99.99"
String.format("%05d", 42); // 输出结果为 "00042"

使用示例

格式化日期时间

在Java中,我们通常会需要格式化日期时间,以便以特定的格式输出。下面的示例演示如何使用string.format()方法将日期和时间格式化为字符串:

import java.util.Date;
import java.text.SimpleDateFormat;

public class DateFormatExample {

    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前时间:" + sdf.format(now));
    }
}
输出结果如下:
当前时间:2021-01-01 13:30:25

格式化货币金额

在Java中,我们通常需要将数字格式化为货币金额,以便以特定的格式输出。下面的示例演示如何使用string.format()方法将数字格式化为货币金额:

import java.util.Locale;

public class CurrencyFormatExample {
    public static void main(String[] args) {
        double amount = 123456.789;
        Locale locale = new Locale("en", "US");
        String currency = String.format(locale, "Currency: %.2f", amount);
        System.out.println(currency);
    }
}
输出结果如下:
Currency: $123,456.79

小结

使用Java的string.format()方法可以方便地将各种数据类型格式化为指定形式的字符串。在参数中,可以指定要格式化的值以及输出格式。此外,可以采用不同的Locale来格式化字符串,从而实现国际化和本地化。