需求澄清_澄清字符串的格式!

需求澄清

用户友好的介绍

如果您不熟悉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/334675.shtml

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

相关文章

数据结构铁轨问题_每天5分钟用C#学习数据结构(20)图 Part 1

【基础知识】| 作者 / Edison Zhou这是恰童鞋骚年的第216篇原创文章前面已经介绍了线性表和树两类数据结构&#xff0c;线性表中的元素是“一对一”的关系&#xff0c;树中的元素是“一对多”的关系&#xff0c;本章所述的图结构中的元素则是“多对多”的关系。图(Graph)是一种…

Mac上最好的Markdown文本编辑器_编辑工具

Bear Typora iPic 支持预览&#xff0c;图片不在本地&#xff0c;很多人推荐 Typed Ulysses 对 Code 片段支持不好 Mou 支持预览 MWeb 支持本地图片和图床 Byword 无法预览&#xff0c;对 Code 片段支持不好 Sublime Text 不支持预览 插件 OmniMarkupPreviewer Markdo…

中国大学生计算机设计大赛云南,第14届中国大学生计算机设计大赛云南赛区决赛举行...

掌上春城讯6月19日&#xff0c;2021 年“浪潮杯”云南省大学生计算机设计大赛暨第 14 届中国大学生计算机设计大赛云南赛区决赛在云南工商学院举行。中国大学生计算机设计大赛属于全国高等学校一类竞赛&#xff0c;是一个国家级的以实现高等学校计算机教育培养目标为核心的创新…

jvm gc,gc算法_GC解释:算法

jvm gc,gc算法如前一篇文章中所述&#xff0c;HotSpot JVM中有四个可用的垃圾收集器。 它们之间有一些显着差异&#xff0c;但是用于完成实际工作的算法背后的实际概念非常相似。 在这篇简短的文章中&#xff0c;我将尝试解释三种基本算法&#xff1a; 打标 打标紧凑 标记复…

python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

题目实现一个函数&#xff0c;一个可以删除单链表中倒数第k个节点难度简单分析本题比较简单&#xff0c;实现方法多种多样&#xff0c;这里提供一种方法首先明确一点&#xff0c;在单链表中删除倒数第k个节点&#xff0c;需要找到他的前一个节点&#xff0c;让前一个节点指向后…

SSL 和 TLS 介绍

SSL(Secure Sockets Layer 安全套接层)及其继任者传输层安全&#xff08;Transport Layer Security&#xff0c;TLS&#xff09; 是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。 SSL 功能&#xff1a; 认证用户和服务器&#xff…

天津计算机中级职称需要什么,天津市中级职称评定条件是什么

天津市中级职称评定条件是什么作者&#xff1a;职称驿站浏览量&#xff1a;5351104时间&#xff1a;2019-04-15转眼间2019年马上就要过完三分之一了&#xff0c;对于2019年的职称评审有很多人早早就开始了相关的准备工作&#xff0c;也有一些人才刚刚想到评审的事情&#xff0c…

jsf el表达式_JSP,JSF和EL简介

jsf el表达式JavaServer页面&#xff0c;JavaServer Faces和表达语言 在本文中&#xff0c;我将研究JavaServer Pages&#xff08;JSP&#xff09;和Expression Language&#xff08;EL&#xff09;&#xff0c;然后将其与JavaServer Faces &#xff08;JSF&#xff09;关联。 …

wxpython多线程消息传递_wxpython多线程间通信

#!bin/bash/python#-*- codingutf-8 -*-importtimeimportwxfrom threading importThreadfrom wx.lib.pubsub importpubclassTestThread(Thread):def __init__(self):Thread.__init__(self)self.start()defrun(self):#线程执行的代码for i in range(101):time.sleep(0.03)wx.Cal…

浅谈防火墙对 FTP 的影响及故障排除

FTP 是常见的基于TCP的网络服务&#xff0c;它使用了两个TCP连接来建立逻辑通信信道&#xff0c;即控制连接和数据连接。当客户端与服务器建立一个FTP会话时&#xff0c;使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时&#xff0c;它们在独立的TC…

电子计算机职业40201,天津滨海中等专业学校

一、招生专业1.生物技术制药专业培养:该专业学生主要面向生物技术制药的相关医药企业&#xff0c;具备生物技术制药生产岗位的工作能力。在校学习期间学习生物药物的生产、质量控制、经营、设备维护及药物研发助理等职业技能&#xff0c;在校期间可获得酶制剂制造工职业资格证书…

wps 呼叫方拒绝呼叫_呼叫我或异步REST

wps 呼叫方拒绝呼叫本文是使用Spring Boot Java 8制作的工作正常的异步REST应用程序的非常简单的示例。SpringBoot使开发Web应用程序几乎非常容易&#xff0c;但是为了简化任务&#xff0c;我从Spring存储库中举了一个例子&#xff0c;称为rest- service &#xff0c;将其分叉…

定向输出命令_数据流的世界,带你了解Linux重定向

今天&#xff0c;小编就带大家一起来看看数据重定向。重定向&#xff1a;将原本输出到标准输出的数据重定向到一个文件中。用于终端显示输出的特殊设备&#xff1a;IO重定向是为了改变默认输入、输出的位置&#xff1a;输出重定向(标准输出STDOUT和标准错误输出STDERR)【>】…

SSH(Secure Shell) 介绍一

文章目录基本原理首次建立连接的时候的公钥交换通过ssh来进行密码登录利用公钥来登录基本原理 SSH&#xff08;Secure Shell&#xff09;是一套协议标准&#xff0c;可以用来实现两台机器之间的安全登录以及安全的数据传送&#xff0c;其保证数据安全的原理是非对称加密。 传…

影响个人计算机系统功能的因素,影响个人计算机系统功能的因素除了系统使用哪种位的微处理器外,还有CPU的时钟频率、CPU主内存容量、CPU所能提供的指令集。...

影响个人计算机系统功能的因素除了系统使用哪种位的微处理器外&#xff0c;还有CPU的时钟频率、CPU主内存容量、CPU所能提供的指令集。更多相关问题根据《空气质量恶臭的测定三点比较式臭袋法》(GB&#xff0f;T14675-1993)&#xff0c;臭气浓度是指用无臭空气对恶臭样品连续稀…

gc 堆外_GC解释:堆

gc 堆外世代垃圾收集器 JVM堆分为两个不同的世代。 一种称为“年轻”&#xff0c;第二种称为“老”&#xff08;有时称为终身制&#xff09;。 年轻一代又分为两个主要的逻辑部分&#xff1a;伊甸园和幸存者空间。 垃圾收集人员还使用了虚拟空间供年轻人和老年人使用&#xff0…

predicate 列存储索引扫描_ColumnStore index (列存储索引)解析

简介首先介紹列存储的概念&#xff1a; 传统的数据库存储是行存储。对于SQL Server来说&#xff0c;每个page是8K&#xff1b;往page里面塞数据&#xff0c;假设该表每条数据长度是500字节&#xff0c;那么这个page 先塞第一条数据&#xff0c;然后再塞第二条数据&#xff0c;大…

数据传输协议汇总

文章目录一、FTP(File Transfer Protocol 文件传输协议)&#xff08;一&#xff09;FTP 通讯端口&#xff08;二&#xff09;FTP 支持两种连接模式&#xff08;三&#xff09;缺点&#xff08;四&#xff09;FTP 命令&#xff08;五&#xff09;FTP 响应码&#xff08;六&#…

得力科学计算机怎么求余,山商“郭叔”:妙招讲高数 考研路上得力导师

山东工商学院数学与信息科学学院教授郭林大众网海报新闻记者 屈晨晨 烟台报道“郭老师人特别和蔼&#xff0c;能够和学生们打成一片&#xff0c;不仅讲课风趣&#xff0c;同时也给予了我们很多帮助&#xff0c;私底下我们都喊他郭叔。”这是山东工商学院很多毕业生对郭老师的评…

如何打开笔记本电脑的摄像头_Win8系统笔记本电脑摄像头无法使用的解决办法...

Win8系统电脑摄像头不能用怎么办&#xff1f;使用Win8系统笔记本电脑的用户反映&#xff0c;电脑摄像头无法使用了&#xff0c;这是怎么回事呢&#xff1f;如何解决这个问题&#xff1f;请看下文。解决方法&#xff1a;1、打开计算机中的“控制面板”&#xff0c;如图所示&…