一、前言
String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "John");
,下面将笔记整理并记录下来。
// 使用当前本地区域对象(Locale.getDefault())格式化字符串 String String.format(String fmt, Object... args); // 自定义本地区域对象格式化字符串 String String.format(Locale locale, String fmt, Object... args);
占位符完整格式为: %[index$][标识]*[最小宽度][.精度]转换符 。
针对不同数据类型的格式化,占位符的格式将有所裁剪。
% ,占位符的其实字符,若要在占位符内部使用%,则需要写成 %% 。
[index$] ,位置索引从1开始计算,用于指定对索引相应的实参进行格式化并替换掉该占位符。
[标识] ,用于增强格式化能力,可同时使用多个 [标识] ,但某些标识是不能同时使用的。
[最小宽度] ,用于设置格式化后的字符串最小长度,若使用 [最小宽度] 而无设置 [标识] ,那么当字符串长度小于最小宽度时,则以左边补空格的方式凑够最小宽度。
[.精度] ,对于浮点数类型格式化使用,设置保留小数点后多少位。
转换符 ,用于指定格式化的样式,和限制对应入参的数据类型。
占位符格式为: %[index$][标识][最小宽度]转换符
示例——将"hello"格式化为" hello"
String raw = "hello"; String str = String.format("%1$7s", raw); // 简化 //String str = String.format("%7s", raw);
示例——将"hello"格式化为"hello "
String raw = "hello"; String str = String.format("%1$-7s", raw); // 简化 //String str = String.format("%-7s", raw);
可用标识:
-,在最小宽度内左对齐,右边用空格补上。
可用转换符:
s,字符串类型。
c,字符类型,实参必须为char或int、short等可转换为char类型的数据类型,否则抛IllegalFormatConversionException异常。
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
n,平台独立的换行符(与通过 System.getProperty("line.separator") 是一样的)
占位符格式为: %[index$][标识]*[最小宽度]转换符
示例——将1显示为0001
int num = 1; String str = String.format("%04d", num)
示例——将-1000显示为(1,000)
int num = -1000; String str = String.format("%(,d", num)
可用标识:
-,在最小宽度内左对齐,不可以与0标识一起使用。 0,若内容长度不足最小宽度,则在左边用0来填充。 #,对8进制和16进制,8进制前添加一个0,16进制前添加0x。 +,结果总包含一个+或-号。 空格,正数前加空格,负数前加-号。 ,,只用与十进制,每3位数字间用,分隔。 (,若结果为负数,则用括号括住,且不显示符号。
可用转换符:
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。 d,整数类型(十进制)。 x,整数类型(十六进制)。 o,整数类型(八进制) n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取
占位符格式为: %[index$][标识]*[最小宽度][.精度]转换符
示例:
double num = 123.4567899; System.out.print(String.format("%f %n", num)); // 123.456790 System.out.print(String.format("%a %n", num)); // 0x1.edd3c0bb46929p6 System.out.print(String.format("%g %n", num)); // 123.457
可用标识:
-,在最小宽度内左对齐,不可以与0标识一起使用。 0,若内容长度不足最小宽度,则在左边用0来填充。 #,对8进制和16进制,8进制前添加一个0,16进制前添加0x。 +,结果总包含一个+或-号。 空格,正数前加空格,负数前加-号。 ,,只用与十进制,每3位数字间用,分隔。 (,若结果为负数,则用括号括住,且不显示符号。
可用转换符:
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。 n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取。 f,浮点数型(十进制)。显示9位有效数字,且会进行四舍五入。如99.99。 a,浮点数型(十六进制)。 e,指数类型。如9.38e+5。 g,浮点数型(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入)
占位符格式为: %[index$]t转换符
示例:
Date now = new Date(); String str = String.format("%tF", now); // 2014-10-12
可用转换符
1. 日期的转换符
c,星期六 十月 27 14:21:20 CST 2007 F,2007-10-27 D,10/27/07 r,02:25:51 下午 T,14:28:16 R,14:28 b, 月份简称 B, 月份全称 a, 星期简称 A, 星期全称 C, 年前两位(不足两位补零) y, 年后两位(不足两位补零) j, 当年的第几天 m, 月份(不足两位补零) d, 日期(不足两位补零) e, 日期(不足两位不补零)
2. 时间的转换符
H, 24小时制的小时(不足两位补零) k, 24小时制的小时(不足两位不补零) I, 12小时制的小时(不足两位补零) i, 12小时制的小时(不足两位不补零) M, 分钟(不足两位补零) S, 秒(不足两位补零) L, 毫秒(不足三位补零) N, 毫秒(不足9位补零) p, 小写字母的上午或下午标记,如中文为“下午”,英文为pm z, 相对于GMT的时区偏移量,如+0800 Z, 时区缩写,如CST s, 自1970-1-1 00:00:00起经过的秒数 Q, 自1970-1-1 00:00:00起经过的豪秒
<,用于格式化前一个转换符所描述的参数。
示例:
int num = 1000; String str = String.format("%d %<,d", num); // 结果"1000 1,000
相关推荐
Commons Lang是Apache软件基金会开发的一个Java工具包,它提供了许多实用的函数,扩展了Java标准库中关于字符串处理的功能。`StringUtils`类是这个工具包中的核心类之一,专门用于处理字符串的各种操作,包括但不...
`charAt()`方法用于获取指定索引处的字符,`length()`返回字符串的长度,而`format()`方法则用于格式化字符串输出,可以根据指定的格式和参数生成新的字符串。 理解Java中的字符串是非常基础且关键的,因为它在日常...
在计算机编程中,尤其是在Java这样的面向对象的语言中,格式化字符串是一项非常实用的功能。它主要用于将数据按照特定的格式转换为字符串形式,方便在界面上显示或用于日志记录等场景。常见的格式化类型包括数字格式...
在IT行业中,日期字符串的截取与格式化是常见的任务,尤其在处理日志、数据分析或者用户界面展示时。这个话题涉及到编程语言中的日期时间处理,通常与编程库或框架的功能紧密相关。在这个主题中,我们将深入探讨日期...
`String`类还提供了`format()`方法,用于格式化输出字符串,类似于C语言的`printf`函数。 ### 9. `compareTo()` 和 `equals()` - `compareTo(String anotherString)`:比较字符串的字典顺序,返回整数结果。 - `...
- 使用`String.format()`方法配合`%n`或其他格式化符号,可以实现字符串的填充。例如,`String.format("%1$-10s", "hello")`会在左侧填充空格,使"hello"长度至少为10。 - `StringBuilder`或`StringBuffer`类的`...
通过阅读`StrUtil.java`源代码,我们可以深入了解每个方法的具体实现,学习如何优化字符串操作,并可能从中获取灵感,为自己的项目创建类似的工具类。对于Java开发者来说,熟悉和掌握这样的工具类是非常有益的。
在Java中,字符串是对象,它们被封装在`java.lang.String`类中。创建字符串有两种方式:使用字面量(如`"hello"`)或通过`String`构造函数。字面量字符串会放入常量池,而构造函数创建的字符串会在堆中分配空间。 ...
- **格式化字符串字面量**:Python的f-string、C++的`std::format`或Java的`String.format()`提供了一种简洁的字符串格式化方式。 - **占位符**:通过占位符如`%d`、`%s`等来动态插入变量值到字符串中。 6. **...
这些工具类提供了诸如空白字符处理、字符串格式化、比较和查找等功能。 2. **日期时间工具类**:Java 8引入了`java.time`包,提供`LocalDate`, `LocalTime`, `LocalDateTime`等类,以及`java.time.format....
- `java.time.format.DateTimeFormatter` 用于格式化和解析日期时间字符串。 4. **集合工具类**: - `java.util.Collections` 提供了一系列静态方法,用于操作集合,如排序、查找、填充等。 - `java.util....
- `java.lang.String`:Java中的字符串类,不可变且线程安全。它提供了大量方法,如`substring()`, `trim()`, `indexOf()`, `replace()`, `split()`等,用于字符串操作。 - `java.lang.StringBuilder`和`java.lang...
在Java开发过程中,日期(`Date`)与字符串(`String`)之间的相互转换是非常常见的需求。这不仅涉及到数据类型的转换,还涉及到时间格式的处理。本文将详细介绍如何实现`Date`与`String`之间的自由转换,并提供具体...
此外,`java.time.format.DateTimeFormatter`提供了丰富的格式化选项,可以方便地将日期时间转换为字符串或反之。 2. **字符串工具类**: `java.lang.StringBuilder`和`java.lang.StringBuffer`用于构建和操作字符...
3. **字符串操作**:`java.lang.String`类提供了大量的字符串处理方法,如concat()、substring()、trim()、indexOf()等,用于字符串连接、截取、去除空格、查找子串等操作。另外,`java.util.regex`包中的Pattern和...
- `java.lang.String`的`format()`方法:类似C语言的`printf`,方便地进行字符串格式化。 3. **文件操作**: - `java.io.File`:表示文件或目录,提供了创建、删除、重命名、检查属性等操作。 - `java.nio`包:...
2. **StringUtil.java**:字符串处理是Java开发中常见的任务,此类提供了诸如检查空字符串、连接字符串、去除两端空白字符、格式化字符串、替换子串等方法。例如,`isEmpty()`用于判断字符串是否为空,`replace...
为了方便开发人员对字符串进行各种操作,Java提供了一系列的内置工具类,如`String`类本身的静态方法以及`org.apache.commons.lang3.StringUtils`这样的第三方库。在这个"字符串工具类"主题中,我们将深入探讨这些...