澄清字符串的格式!

用户友好的介绍

如果您不熟悉String格式或只想快速解决问题,那么String格式的Java文档不是最容易阅读和理解的。 尽管它很完整,但它不是非常用户友好的,所以我想我会尝试编写一个更清晰的版本。 这篇文章不仅对您有帮助,而且对我本人来说也很重要。

格式化方法

有两种提供String格式化行为的方法: format()printf()format()方法是String.class的静态方法,而printf()方法是静态System.out.class的方法。 它们的行为完全相同,并且具有相同的签名。

format("format string", argument(s));
printf("format string", argument(s));

“格式字符串”用于格式化参数列表中的值。

它既可以包含不与任何参数关联的String文字信息,也可以包含特定于参数的格式数据。 格式化数据将始终以百分号( )开头,后跟格式化语义。

让我们看一些例子。

替换字符串中的占位符

让我们从最简单的示例开始。 在占位符下方的代码段中, %s被替换为名称Alex

String.format("Hello %s", "Alex");
// Hello Alex

format()方法返回一个字符串,其中包含消息Hello Alex

多占位符

一次可以替换多个占位符。 在下面的示例中,格式化的String由String和浮点基元组成。

String.format("The %s costs $%f", "Bag", 12.99f);
// The Bag costs $12.990000

请注意,该数字如何不格式化为货币的十进制数字。 接下来让我们看看数字格式。

如何格式化数字

要将数字格式化为给定的小数位数,请指定占位符后的位数,如以下代码段所示。

String.format("The %s costs $%.2f", "Bag", 12.99f);
// The Bag costs $12.99

添加数字分隔符

要添加数字分隔符,请在%占位符后添加逗号。

String.format("The %s costs $%,.2f", "Car", 54999.99f);
// The Car costs $54,999.99

逗号是特定于语言环境的,因此在使用该字符对数字进行分组的区域中将使用点(。)分隔符。

让我们快速查看其他数字格式设置选项。

将负数括在括号中

使用字符表示负数应放在括号内。

String.format("Absolute zero is %(.2f degrees Celsius", -273.15f);
// Absolute zero is (273.15) degrees Celsius

包含正号或负号

使用+字符可包含正号或负号。

String.format("Temperature of the Sun %,+d K", 5778);
// Temperature of the Sun +5,778 K
String.format("Temperature of Jupiter %,+d Celsius", -145);
// Temperature of Jupiter -145 Celsius

用零填充数字

用0标志和指定宽度来填充零。 在下面的代码中,宽度为10。

String.format("A padded number %010d", 42);
// A padded number 0000000042

请注意,零的数量不是10,而是数字的宽度是10,数字后的剩余空间用零填充以使数字10位数长。

左对齐数字

该数字可以左对齐,并具有给定的宽度。

String.format("A left-justified number <%-10d>", 42);
// A left-justified number <42        >

请注意,左边的空格数不是10,而是数字的宽度是10,数字后的剩余空间用空格字符填充,以使数字字符变长。

八进制和十六进制数

有两个用于显示八进制和十六进制数字的格式设置选项:前导0或0x或不包含任何前导字符。

String.format("An octal number %o", 100);
// An octal number 144
String.format("An octal number %#o", 100);
// An octal number 0144
String.format("An hex number %x", 100);
// An hex number 64
String.format("An hex number %#X", 100);
// An hex number 0X64

注意最后一个示例中的大写X。 X的大小写决定了输出编号中X的大小写,即小写的x导致输出编号中的小写X。

编号标志汇总

为了总结到目前为止所讨论的内容,我准备了一张汇总这些标志的表格。 这不是一个详尽的列表,因为您必须查阅Java文档 。

描述 笔记
左对齐这个说法。 不能与打击垫“ 0”一起使用。 还必须指定宽度。
+ 在此参数中包含一个符号(+或–) 仅带数字。 d或f。
0 用零填充该参数。 仅带数字。 还必须指定宽度。 d或f。
使用特定于语言环境的分组分隔符(即123,456中的逗号) 仅带数字。 d或f。
将负数括在括号中 仅带数字。 d或f。

常规,字符和数字类型的格式说明符具有以下语法:

格式字符串: %[arg_index $] [flags] [width] [。precision]转换字符

方括号[]中的值是可选的,格式字符串唯一需要的元素是百分比字符%和转换字符。

转换字符

为了汇总我所讨论的转换字符,我构建了一个汇总表。 这不是一个详尽的列表,因为您必须查阅Java文档 。

转换字符 类型 笔记
d 积分 小数整数
Ø 积分 八进制整数
x,X 积分 十六进制整数
e,E 浮点 科学计数法中的小数
F 浮点 小数
约会时间 日期和时间转换字符的前缀
百分 文字百分比

如何格式化字符串

字符串的格式与数字的格式几乎相同,并且将使用许多相同的标志。 让我们开始看一个用几个参数格式化的字符串。

多个参数

格式化的字符串可以包含多个不同类型的参数。 以下示例有两个参数:一个是字符串,另一个是整数。

String.format("The %1s has %2d moons", "Saturn", 53);
// The Saturn has 53 moons

注意参数的格式。 该数字表示字符串后面的参数顺序。 例如,%1s引用第一个参数,%2d引用第二个参数。

格式化字符串

字符串可以采用与数字相同的格式。 让我们看一些简单的例子:

指定宽度

String.format("Fun with <%10s>", "Java");
// Fun with <      Java>

指定宽度的左对齐

output = String.format("Fun with <%-10s>", "Java");
// Fun with <Java      >

截断最大字符数

output = String.format("Fun with <%.1s>", "Java");
// Fun with <J>

最后的话

这是一些结合了标志,宽度,精度和转换字符的复合示例。

System. out.printf( "%2$(+,8d, %1$(+,8d", 1234, -5678);
// (5.678),   +1.234
  • 在负数附近显示花括号
  • +显示+表示正数
  • 使用本地号码格式
  • 8最小宽度8
  • d
System. out.printf( "%2$0+,8d, %1$0+,8d", 1234, -5678);
// -005.678, +001.234
  • 0用0填充空间
System. out.printf( "%2$-+,8d, %1$-+,8d", 1234 ,-5678);
// -5.678, +1.234
  • 左对齐
System. out.printf( "%1$+,8.4f", 12234.678878);
// +12.234,6789
  • +显示+表示正数
  • 使用本地号码格式
  • 8最小宽度8
  • .4点后的位数,四舍五入
  • f浮动

结论

字符串格式化是一个复杂的主题,为确保您了解所有详细信息,请参阅Java文档 。

代码源

本文的代码源位于我的GitHub存储库中 。

进一步阅读

我通常会发布有关Java EE的帖子。   以下是您可能感兴趣的主题的简短列表:

  • Java EE:过去,现在和未来
  • 上下文和依赖注入 (CDI)
  • 企业Java Bean (EJB)
  • 什么是JAX-RS批注?
  • @Context注释用于什么?

学到更多

如果您想提高Java EE技能,请尝试我的Lynda.com视频培训课程。 它们涵盖了多种Java EE技术:

  • 使用JAX-RS 2.0的RESTful服务
  • 使用Java EE进行WebSocket编程
  • 使用Java EEJSON处理
  • 学习Java企业版

翻译自: https://www.javacodegeeks.com/2017/09/format-string-clarified.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5 图片 渐变_AI教程!5分钟教你绘制超酷炫的字体效果

图一所示的图片就是我们今天要学的AI教程啦。为什么想起来要做这个呢&#xff1f;因为前两天有两个粉丝私信我问这种效果的字体怎么做。觉得大家应该对这类字体比较感兴趣的&#xff0c;所以今天就给大家出个教程啦。第一眼看上去是不是感觉很酷炫&#xff1f;其实步骤也不多&a…

管理任务执行-如何制定有效的机制

背景 之前做工程师的时候&#xff0c;自己负责数据开发&#xff0c;现在做管理了&#xff0c;数据开发这一块工作分给了团队成员&#xff0c;管理沟通占据了大量的时间&#xff0c;项目的质量没有很好的把控。问题出在哪&#xff1f; 想让团队成员分担我们手头的工作&#xff0…

python和sql_Python和SQL 2017的强大功能

Python和SQL Server 2017的强大功能 原文来自&#xff1a;https://www.red-gate.com/simple-talk/sql/sql-development/power-python-sql-server-2017/ Python是SQL Server 2017的新版本。它的主要目的是允许在SQL Server中使用基于Python的机器学习&#xff0c;但它可以使用的…

xmlrpc与jsonrpc

RPC是Remote Procedure Call的缩写&#xff0c;翻译成中文就是远程过程调用&#xff0c;是一种在本地的机器上调用远端机器上的一个过程&#xff08;方法&#xff09;的技术&#xff0c;这个过程也被大家称为“分布式计算”&#xff0c;是为了提高各个分立机器的“互操作性”而…

6的变换_电源学报 | 2020年第3期:quot;高性能双向直流变换技术及其应用quot;专辑征稿启事...

往期精选&#xff1a;【电源学报•热点论文】贝尔福-蒙贝利亚技术大学(UTBM)高非教授-多物理域质子交换膜燃料电池建模仿真及实验测试专辑主编&#xff1a;张云 研究员(天津大学)吴红飞 教授(南京航空航天大学)专辑刊期&#xff1a; 2020年第3期(2020年5月)专辑介绍双向直流变换…

0基础怎么学python10010基础怎么学python_0基础学python全套python教程

C语言要写1000行代码&#xff0c;Java只需要写100行&#xff0c;而Python可能只要20行&#xff0c;所以Python是一种相当高级的语言&#xff0c;如今是Python的世界&#xff0c;花时间学习Python编程语言将是你对未来最好的投资&#xff0c;这就是要学习python的理由。 如何学习…

.Net Core3 新特性整理

.net core 3实现了.net 标准2.1。 1、生成可执行文件 以前版本需要dotnet run运行项目&#xff0c;.net core 3支持直接生成目标平台的可执行文件。比如windows就是exe了&#xff0c;linux就x了。 2、生成依赖项的副本 以前版本在build时不会把NuGet的工具复制到目标目录&#…

flash大作业一分钟源文件_「百树云课堂」一写作业就像被雷劈,是什么“病”?...

一写作业就闹心&#xff0c;大部分都是因为在培养习惯的时候基础没打好。比如&#xff1a;对时间不敏感、对效率不敏感、专注力低下等等&#xff01;今天咱就系统说下“习惯培养”的重点。1大部分娃写不完作业&#xff0c;最主要的一点就是对时间不敏感。写一个字&#xff0c;喝…

bzoj5147bzoj2121loj6701 字符串游戏

做不出来杂题,到处找题做 看到$loj$上新出了一道题,觉得很神仙不错, 还记得Censoring吗(一个AC自动机的题) 这个题求最优解,数据范围$150$ 题解 数据范围非常小,首先贪心肯定不行,考虑AC自动机上$dp$? 好吧其实是区间$dp$ 一个直接的想法是维护$f[l][r]0/1$表示是否可以清空$l…

7个相同小球4个不同盒子_【计算启蒙】4个游戏陪娃玩懂“数拆分”,加减法都不用愁!...

前几天我们整理了能锻炼孩子“数-量匹配”知识的家庭生活小游戏&#xff1a;7个家庭数-量匹配小游戏&#xff0c;让孩子摆脱“机械数数”&#xff01;​mp.weixin.qq.com所以今天&#xff0c;助教就来分享一些借助实物的“数拆分”小游戏吧&#xff01;已经学会数量对应&#x…

python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式

我就废话不多说了&#xff0c;大家还是直接看代码吧&#xff01; import keras import numpy as np from keras.applications import vgg16, inception_v3, resnet50, mobilenet #Load the VGG model vgg_model vgg16.VGG16(weightsimagenet) #Load the Inception_V3 model in…

NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl1,nowrk-1;nowl<maxx;nowlk,nowrk,nowrmin(nowr,maxx)){if(ansmod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);} 复杂度分析,调和级数$√n*log(n)$ 代码 #in…

宏任务和微任务执行顺序_确保任务的执行顺序

宏任务和微任务执行顺序有时有必要对线程池中的任务施加一定的顺序。 JavaSpecialists通讯的第206期提出了一种这样的情况&#xff1a;我们使用NIO从多个连接中读取数据。 我们需要确保来自给定连接的事件按顺序执行&#xff0c;但是不同连接之间的事件可以自由混合。 我想提出…

c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

最近在做连续数据流的缓冲系统&#xff0c;C语言代码实现后&#xff0c;粗略测试了下&#xff0c;功能上应该没有问题。那么&#xff0c;接下来就该测试性能了。输入 top 命令&#xff0c;的确可以看到一系列 cpu 使用率&#xff0c;其中一个值得注意的子项就是 io 使用率了&am…

wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏

About WiresharkWireshark是世界上最重要和使用最广泛的网络协议分析器。它让您在微观层次上看到网络上正在发生的事情&#xff0c;并且是许多商业和非营利性企业、政府机构和教育机构事实上(通常也是法律上)的标准。Wireshark的发展得益于全球网络专家的志愿贡献&#xff0c;并…

管理沟通-沟通框架

背景 管理三明治的承托&#xff0c;管理沟通。离开了沟通&#xff0c;所有的工作都将搁浅而无法前进。 常见话题&#xff1a; 向上沟通员工激励团队凝聚力提升向下沟通工作特点 工作职责说明技术开发计算机&#xff0c;编程语言&#xff0c;设计算法&#xff0c;开发功能&#…

t’触发器真值表和状态方程_清写出触发器按逻辑特性的分类;写出T触发器的状态方程。...

下列对配电所的说法有误的一项是()。A&#xff0e;市区10kV公用配电所的供电半径一般不大于300m&#xff0c;在郊区的供成功的基础设施服务的提供者都首先是按照商业化的原则经营的&#xff0c;并至少具有几个基本特点&#xff0c;这些基本特我国幅员辽阔&#xff0c;能源分布不…

NetBeans 9抢先体验

Java 9即将来临&#xff0c;NetBeans 9也即将来临。在本文中&#xff0c;我们将看到NetBeans 9 Early Access为开发人员提供的支持&#xff0c;以帮助他们构建Java 9兼容的应用程序。 Java 9提供了许多&#xff08;大约90种&#xff09; 新功能&#xff0c;包括Modules和JShel…

块裁剪后的矩形边界如何去掉_手持拍摄画面太抖?这节课教你如何快速稳定抖动的画面...

手持相机进行拍摄&#xff0c;画面会有较为明显的抖动&#xff0c;这节课就教大家如何稳定视频画面。素材导入到PR后&#xff0c;为素材添加变形稳定器效果&#xff0c;软件会自动开始分析。当前素材上方会显示在后台分析&#xff0c;这时候我们可以剪辑其他部分&#xff0c;并…

怎么把空字符串去掉_Python知识点字符串转整数需注意

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选 来源&#xff1a;简说Python 作者&#xff1a;老表One old watch, like brief python大家好&#xff0c;我是老表&#xff5e;Python知识点系列&#xff0c;学习了记得点赞、…