字符串格式化:Formatter类

java formatter 格式使用 Formatter 格式化输出 基本使用示例 Formatter formatter = new Formatter(); formatter.format("%s的年龄是%d岁,收入是%f,职位是%s", "张三",30,500.5,"研发"); // System.out.println(f.toString()); System.out.println(formatter); formatter.close(); //输出 // 张 阅读详情

本文目录

1 Formatter类

2 格式化说明符

3 其它相关方法

4 相关文章


1 Formatter类

1.1 使用方法

Formatter formatter = new Formatter([destination]);

formatter.format(String format, Object…args);

1.2 使用说明

(1)Formatter构造参数:

若无参数,格式化后的字符串会被存放在一个内部的StringBuffer中,此后,可通过formatter.toString()方法返回格式化后的字符串。

// 无参数构造Formatter对象
Formatter formatter = new Formatter();
// 格式化操作
formatter.format("The result number is %d.", 7);
// 获得格式化后的字符串
String str = formatter.toString();
// 控制台输出内容:The result number is 7.
System.out.println(str);

若有参数,该参数表示要输出的目标位置,可以是一个StringBuffer对象,一个文件,或一个数据流,此后,格式化的字符串将直接输出到指定位置。

// 构造Formatter对象并指向标准输出流
Formatter formatter = new Formatter(System.out);
// 格式化并输出到指定位置(控制台输出内容:The result number is 7.)
formatter.format("The result number is %d.", 7);

(2)format方法参数:

String format

是一个包含格式化说明符的字符串,该字符串指定了整体目标格式,通过格式化说明符进行占位并指定相应位置的内容格式;

Object… args

表示多个参数对象,其内容将依次对应format中的占位符(格式化说明符),根据指定的内容格式填充到指定位置,从而形成一个满足要求的字符串。

2 格式化说明符

2.1 格式

%[argument_index$][flags][width][.precision]conversion

2.2 格式说明

(1)argument_index$:指定对应的内容参数位置,默认按照顺序依次对应。

(2)flags:格式控制。

(3)width:区域宽度。

(4).precision:对于浮点型数据,表示显示的小数位数;对于字符串数据,表示显示的字符数量。

(5)conversion:类型转换字符。

2.3 格式控制(flags)

符号作用示例效果
无负号右对齐formatter.format("***%8d***", 1000);***    1000***
有负号“-”左对齐formatter.format("***%-8d***", 1000);***1000    ***
有加号“+”正数前显示正号
负数前显示负号
formatter.format("***%+8d***", 1000);
formatter.format("***%+8d***", -1000);
***   +1000***
***   -1000***
有空格“ ”正数前显示空格
负号前显示负号
formatter.format("***% 8d***", 1000);
formatter.format("***% 8d***", -1000);
***    1000***
***   -1000***
有零“0”使用0填充剩余位置formatter.format("***%08d***", 1000);***00001000***
有逗号“,”每3位数字添加一个逗号formatter.format("***%,8d***", 1000);***   1,000***

2.4 类型转换字符

符号类型示例效果
d整数型(十进制)formatter.format("%d", 1000);1000
o整数型(八进制)formatter.format("%o", 1000);1750
x整数型(十六进制)formatter.format("%x", 1000);3e8
f浮点型(十进制)formatter.format("%f", 1000.0);1000.000000
e浮点型(科学计数)formatter.format("%e", 1000.0);1.000000e+03
b布尔型formatter.format("%b", true);true
c字符型formatter.format("%c", 'A');A
s字符串型formatter.format("%s", "String");String
%字符“%”formatter.format("%d%%", 100);100%

2.5 时间类型转换字符

符号类型示例效果
tC上世纪formatter.format("%tC", calendar);20
tY年(4位)formatter.format("%tY", calendar);2017
ty年(2位)formatter.format("%ty", calendar);17
tm月formatter.format("%tm", calendar);11
tB月份formatter.format("%tB", calendar);November
tb月份缩写formatter.format("%tb", calendar);Nov
td日(2位)formatter.format("%td", calendar);20
te日formatter.format("%te", calendar);20
tA星期formatter.format("%tA", calendar);Monday
ta星期(缩写)formatter.format("%ta", calendar);Mon
tH小时(24小时制)(2位)formatter.format("%tH", calendar);18
tk小时(24小时制)formatter.format("%tk", calendar);18
tI小时(12小时制)(2位)formatter.format("%tI", calendar);06
tl小时(12小时制)formatter.format("%tl", calendar);6
tM分钟formatter.format("%tM", calendar);10
tS秒formatter.format("%tS", calendar);22
tL毫秒formatter.format("%tL", calendar);490
tN微秒formatter.format("%tN", calendar);570000000
tp上午/下午formatter.format("%tp", calendar);pm
tz时区formatter.format("%tz", calendar);+0800
tZ时区(缩写)formatter.format("%tZ", calendar);CST
ts自1970-01-01 00:00的秒数formatter.format("%ts", calendar);1511172687
tQ自1970-01-01 00:00的毫秒数formatter.format("%tQ", calendar);1511172687297
tFYYYY-MM-DDformatter.format("%tF", calendar);2017-11-20
tDMM/DD/YYformatter.format("%tD", calendar);11/20/17
tRHH:MM(24小时制)formatter.format("%tR", calendar);18:11
tTHH:MM:SS(24小时制)formatter.format("%tT", calendar);18:11:27
trHH:MM:SS 上午/下午formatter.format("%tr", calendar);06:11:27 pm
tc星期 月 日 HH:MM:SS YYYYformatter.format("%tc", calendar);Mon Nov 20 18:11:27 CST 2017

3 其它相关方法

3.1 String.format方法

该方法内部,实际上也是通过Formatter类进行格式化,然后,将格式化后的字符串返回,其内部代码如下:

public static String format(String format, Object... args) {
   return new Formatter().format(format, args).toString();
}

3.2 System.out.format方法

该方法内部,也是通过Formatter类进行格式化,然后,将格式化后的字符串直接输出到System.out输出流,其内部代码如下:

public PrintStream format(String format, Object ... args) {
    try {
        synchronized (this) {
            ensureOpen();
            if ((formatter == null)
                || (formatter.locale() != Locale.getDefault()))
                formatter = new Formatter((Appendable) this);
            formatter.format(Locale.getDefault(), format, args);
        }
    } catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    } catch (IOException x) {
        trouble = true;
    }
    return this;
}

4 相关文章

《Java 8 日期、时间与格式化》

python:自定义字符串格式化 阅读详情

相关推荐

解析Java中1000个常用类:Formatter类,你学会了吗?

Formatter类位于java.util包中,是一个用于生成格式化输出的工具类。它提供了对字符串、数字、日期等多种类型的格式化支持。// 构造方法和主要方法省略通过实现接口,可以自定义对象的格式化行为。

良月柒 1212

formatter是什么?

element里面表格的一个属性 formatter 叫格式化内容的

fan023211的博客 5146

单总线协议(1—Wire bus)【DS2431】

1—Wire 协议定义了复位脉冲、 应答脉冲、写0、写1、读0和读1时序等几种信号类型。所有的单总线命令序列(初始化ROM 命令功能命令)都是由这些基本的信号类型组成的。识别单总线器件(ROM 命令)单总线器件交换数据(功能命令)初始化单总线器件(初始化)

qq_41883039的博客 1150

java stringformatter_Java基础扫盲系列(-)—— String中的format

Java基础扫盲系列(-)—— String中的format以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容。但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码使用String.format()工具api。这里完善知识体系,将Java中的formatter简单的总结下。An interpreter for printf-style format strings...

weixin_42514930的博客 1669

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用与接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件与虚方法,提供资源释放机制,兼顾复用性与扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 787

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

String.format函数使用方法介绍

        在JDK1.5中,String类增加了一个非常有用的静态函数format(String  format, Objece...  argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。

华丽的痘痘 3万+

利用CubeMX复现正点原子TFTLCD驱动例程

①准备delay.c、delay.h、sys.c和sys.h四个文件。FMC的工作原理暂时先欠着,先记录一下CRUD的过程。这里我们使用的是BANK1 的第一个分区。点击 Configuration->FMC。②把fmc自动生成的代码注释掉一部分。配置参数如下图 17.5.1。③这个printf语句要屏蔽掉。选项卡之下配置相关参数。④整体代码,按需裁剪。

qq_59757948的博客 1613

Java字符串的格式化与输出

Java字符串的格式化与输出 在C语言中格式化输出能够通过printf()函数实现,在Java中无需借助第三方工具相同能够实现此功能。自Java SE5后,java也提供了C语言中printf()风格的格式化输出方法。眼下,有三种方法实现格式化输出,參考例如以下: 一、格式化输出的三种方法 1.System.out.format() Java SE5引入的format方法能够用于P...

weixin_34122604的博客 140

告别龟速计算!用Python的fengwo模块5分钟搞定通达信COST/WINNER函数(附完整代码)

本文介绍如何使用Python的fengwo模块高效复现通达信的COST和WINNER函数,解决量化交易中的计算精度和性能问题。通过C++核心算法和多线程优化,计算速度提升显著,误差低于0.5%,并支持与通达信DLL无缝集成,适用于实盘交易策略开发。

weixin_42533751的博客 600

OpenClaw实战系列07:定时任务与自动化工作流实战——让AI从“被动响应”到“主动执行”

通过本文的学习,你已经将 OpenClaw 从“被动应答”升级为“主动执行”的自动化引擎。定时简报:每天8点自动生成行业简报推送飞书/钉钉GitHub事件触发:PR合并自动触发Code ReviewAgent间协作:数据采集→分析→报告全自动流水线系统监控:定时检查服务器状态,异常自动告警核心收获掌握 OpenClaw 内置 Cron 系统的三种调度模式学会 Webhook 配置和事件触发机制理解 Agent 间通信的两种方式(sessions_spawn / sessions_send)

PeterPan的博客 691

Java中用三种方法输出字符串,Java字符串的格式化与输出

Java字符串的格式化与输出在C语言中格式化输出可以通过printf()函数实现,在Java中无需借助第三方工具同样可以实现此功能,自Java SE5后,java也提供了C语言中printf()风格的格式化输出方法。目前,有三种方法实现格式化输出,参考如下:一、格式化输出的三种方法1.System.out.format()Java SE5引入的format方法可以用于PrintStream或Pri...

weixin_34219634的博客 2780

大数据面试必考题:Spark数据倾斜问题总结和优化措施

在Spark分布式计算环境中,

大模型大数据攻城狮的专栏 1466

Java的格式化输出

Java的格式化输出目前分为三种: printf()函数format()函数Formatter类 一. printf()函数和format()函数 这两个函数是等价的,只需要一个简单的格式化字符串,加上一串参数即可,每个参数对应一个格式修饰符 二. Formatter类 未完待续。。。。。

清风徐来,水波不兴 303

GibbsCAM软件二次开发:GibbsCAM软件API接口详解

API(Application Programming Interface,应用程序编程接口)是一种允许不同软件之间进行通信的接口。在GibbsCAM软件中,API提供了与外部程序交互的能力,使得开发者可以利用GibbsCAM的强大功能进行二次开发,定制化满足特定的制造需求。GibbsCAM的API主要基于.NET框架,使用C#或VB.NET等语言进行编程。在GibbsCAM软件中,通过API接口创建自定义几何形状是实现复杂零件设计和加工策略定制的关键步骤。

kkchenjj的博客 1497

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

string类型--字符串常用操作

1、字符串常量 (1)不依赖于语言环境: string.ascii_letters ==>'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' string.ascii_lowercase ==> 'abcdefghijklmnopqrstuvwxyz' string.ascii_uppercase ==> 'ABCDEFG...

卜亚风 1439

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

从头认识java-11.3 格式化输出(1)

这一章节我们来讨论一下格式化输出,这个话题我们将通过几个章节来展开描述。在c语言体系里面,用的最多的估计就是printf这个函数:printf("%d%f",a,b)上面简单的一句,使用了格式化输出,%d表示输出整形数字,%f浮点数。1.System.out.printf和System.out.formatjava继承c语言体系,当然也会有printf之类的函数,我们下面举例:package co

raylee2007的专栏 2116

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

3步搞定fmtlib自定义范围格式化:从痛点到完美输出

fmtlib是一个现代化的C++格式化库,提供了简洁、高效的字符串格式化功能。在C++开发中,我们经常需要格式化各种数据结构,尤其是范围类型如向量、列表等。本文将通过三个简单步骤,帮助你掌握fmtlib的自定义范围格式化技巧,解决格式化范围数据时的常见痛点,实现完美输出。 ## 一、认识范围格式化的痛点 在使用fmtlib进行范围格式化时,开发者常常遇到以下问题: - 默认格式化样式不符合需求

gitblog_00645的博客 477

CPython `string` 模块全解:从 ASCII 常量、Template 到 PEP 3101 格式化体系

`string` 是 CPython 标准库中处理文本的基础模块。它并非简单堆积字符串方法,而是承载了**字符分类常量**、`str.format` 的纯 Python 参考实现 `Formatter`、以及面向 i18n 的 `$`-风格 `Template` 三类能力。本文以 [Doc/library/string.rst](https://link.gitcode.com/i/794b43a

gitblog_00591的博客 217

【python标准库-文本处理服务】string 模块

字符串模块常量、模板字符串、格式化字符串

tester_yangzai的博客 303

C++20中头文件format的使用

C++20中头文件format的使用

网络资源是无限的 1098

Roaster库入门:3个核心API(parse/create/format)让Java代码操作效率提升10倍

Roaster是一个功能强大的Java解析库,它提供了简单易用的API来解析和格式化Java源文件,帮助开发者轻松操作Java代码,显著提升开发效率。无论是解析现有Java文件、创建新的Java类,还是格式化代码,Roaster都能胜任。 ## 为什么选择Roaster库? 在Java开发中,经常需要对Java代码进行解析、生成或格式化操作。传统的方式可能需要手动处理字符串,或者使用复杂的解析

gitblog_00402的博客 1040

python3的formatter_python中的formatter的详细用法

python中的formatter的详细用法

weixin_39777404的博客 1654

python中的formatter的详细用法

今天抽空学习了一下python中的string service中的formatter的相关用法,主要是为了让自己的代码看起来更加和谐,因为很多java或者c语言过来的开发者都不怎么爱使用python的原生的字符串格式化工具,似乎大家都爱用下面的格式化工具 info = 'my name is %s I really enjoy %s' % ('younger', 'python') 现在我要学习使...

weixin_30530339的博客 3051
上一篇: 图解:常用排序算法(冒泡、选择、插入、希尔、快速、归并、堆)
下一篇: 反射
崔显龙
博客等级 码龄15年 95粉丝 64原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值