JAVA字符串占位符使用方法实例
作者:旷野历程 发布时间:2021-09-20 17:30:27
使用 replace 函数动态填充字符串
String str="Hello {0},我是 {1},今年{2}岁";
str = str.replace("{0}", "CSDN");
str = str.replace("{1}", "小猪");
str = str.replace("{2}", "12");
System.out.println(str);
使用 String.format() 占位符替换
作用:使用指定的格式字符串和参数返回一个格式化字符串。
String str=String.format("Hello %s,我是 %s,今年 %s 岁", "CSDN","小猪","12");
System.out.println(str);
String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "CSDN");
String.format 使用
1、占位符
占位符格式:
%[index$][标识]*[最小宽度][.精度]转换符
针对不同数据类型的格式化,占位符的格式将有所裁剪。
%:占位符的其实字符,若要在占位符内部使用%,则需要写成%%。
[index$]:位置索引从1开始计算,用于指定对索引相应的实参进行格式化并替换掉该占位符。
[标识]:用于增强格式化能力,可同时使用多个[标识],但某些标识是不能同时使用的。
[最小宽度]:用于设置格式化后的字符串最小长度,若使用[最小宽度]而无设置[标识],那么当字符串长度小于最小宽度时,则以左边补空格的方式凑够最小宽度。
[.精度]:对于浮点数类型格式化使用,设置保留小数点后多少位。
转换符:用于指定格式化的样式,和限制对应入参的数据类型。
2、对字符或字符串操作
占位符格式:
%[index$][标识][最小宽度]转换符
示例1
String str = "CSDN";
String result = String.format("%1$7s", str);
System.out.println("Hello" + result);
// 简化
result = String.format("%7s", str);
System.out.println("Hello" + result);
// 结果:
Hello CSDN
Hello CSDN
示例2
String str = "CSDN";
String result = String.format("%1$-7s", str);
System.out.println("Hello" + result + ",");
// 简化
result = String.format("%-7s", str);
System.out.println("Hello" + result + ",");
// 结果:
HelloCSDN ,
HelloCSDN ,
可用标识
-,在最小宽度内左对齐,右边用空格补上。
可用转换符
s,字符串类型。
c,字符类型,实参必须为char或int、short等可转换为char类型的数据类型,否则抛IllegalFormatConversionException异常。
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
n,平台 独立的换行符(与通过 System.getProperty("line.separator") 是一样的)
3、对整数操作
占位符格式
%[index$][标识]*[最小宽度]转换符
示例1
将1显示为0001
int num = 1;
String str = String.format("%04d", num);
System.out.println(str);
// 结果:
0001
示例2
将-1000显示为(1,000)
int num = -1000;
String str = String.format("%(,d", num);
System.out.println(str);
// 结果:
(1,000)
可用标识:
-,在最小宽度内左对齐,不可以与0标识一起使用。
0,若内容长度不足最小宽度,则在左边用0来填充。
#,对8进制和16进制,8进制前添加一个0,16进制前添加0x。
+,结果总包含一个+或-号。
空格,正数前加空格,负数前加-号。
,,只用与十进制,每3位数字间用,分隔。
(,若结果为负数,则用括号括住,且不显示符号。
可用转换符:
b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。
d,整数类型(十进制)。
x,整数类型(十六进制)。
o,整数类型(八进制)
n,平台 独立的换行符, 也可通过System.getProperty("line.separator")获取
4、对浮点数操作
占位符格式:
%[index$][标识]*[最小宽度][.精度]转换符
示例:
double num = 123.4567899;
System.out.print(String.format("%f %n", num));
System.out.print(String.format("%a %n", num));
System.out.print(String.format("%g %n", num));
// 结果
123.456790
0x1.edd3c0bb46929p6
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位有效数字,且会进行四舍五入)
5、对日期时间操作
占位符格式:
%[index$]t转换符
示例1
String str = String.format("%tF", new Date());
System.out.println(str);
// 结果
2020-12-15
可用转换符
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起经过的豪秒
常用的类型关系:
转换符 | 详细说明 | 示例 |
---|---|---|
%s | 字符串类型 | “喜欢请收藏” |
%c | 字符类型 | ‘m’ |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 88 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 8.888 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | 不举例(基本用不到) |
%h | 散列码 | 不举例(基本用不到) |
%% | 百分比类型 | %(%特殊字符%%才能显示%) |
%n | 换行符 | 不举例(基本用不到) |
%tx | 日期与时间类型(x代表不同的日期与时间转换符) | 不举例(基本用不到) |
补充:Java替换字符串中的占位符
在开发中,会有动态配置字符串其中的某些字符,如何使用字符中的占位符,并且在代码动态替换占位符实现动态配置字符串!
1.定义字符串时,再string文件添加字符串:
注意!记得要在字符文件中加上这些:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="text1">i am %1$d years old, i am a %2$s</string>
属性值定义如下:
%n$m[d/f/s] 表示 第n个参数,前面有m个空格(0m表示有m个0,浮点数k.m,表示小数点前保留k位,小数点后保留m位),d为整数,f为浮点数,s为字符串。
2.在代码中使用:
String text1 = Context.getResources().getString(R.string.text1);
//注意,Andorid中的Context.getString()与Context.getResources().getString()是一样的,详细可看Context源码0.0
String text2 = String.format(text1,25,"engineer");//"i am 25 years old, i am a engineer"
使用String.format()方法,第一个参数为字符串,后面依次为替换占位符的字符串。
来源:https://blog.csdn.net/xhaimail/article/details/110849226
猜你喜欢
- spring in action第三版读书笔记spring3.0引入了spring expression language(spel)语言,
- 1:Maven命令下载源码和javadocs当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven
- URL(Uniform Resource Locator)是统一资源 * ,它是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,
- RateLimiter官方文档RateLimiter令牌桶原理图随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是1
- 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类
- import java.io.IOException;import javax.xml.parsers.*;import javax.xml
- 本文实例讲述了Java抛出异常与自定义异常类。分享给大家供大家参考,具体如下:异常处理常用方法:常用的异常处理方法有:一、try()catc
- 一、什么是ASMASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,
- 使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。前言:Spring d
- 1.鼠标右击我的电脑–》属性–》高级系统设置2.把下面的变量名称和电脑文件的本地路径填进去即可(注意:变量值后面后面不要带分号)jdk环境变
- 【题目】 汉诺塔问题比较经典,这里修改一下游戏规则:现在限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中
- 前言在使用maven配置Mybatis generator插件时报以下错误,generator插件一直无法使用,查询资料说和eclipse版
- springboot 多个filter的执行顺序以及配置当项目中有多个filter时,为了便于管理,可以创建一个配置文件,对所有的filte
- 我们还是用一个小例子来看看自定义View和自定义属性的使用,带大家来自己定义一个带进度的圆形进度条,我们还是先看一下效果吧从上面可以看出,我
- MyBatis插入Insert、InsertSelective的区别逆向自动生成的mybatis对应配置Mapper文件里面,有两个方法,分
- 本文实例讲述了Java实现特定范围的完数输出算法。分享给大家供大家参考,具体如下:题目内容:一个正整数的因子是所有可以整除它的正整数。而一个
- 目录环境准备1.数据库操作1.1获取所有数据库1.2获取指定库的所有集合名1.3.删除数据库2.文档操作2.1插入文档2.2查询文档2.3分
- 前言Date 类Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。构造方法
- java 配置MyEclipse Maven环境虽然我的大部分项目已经迁到Idea上去了,但是在写部分小的测试程序的时候还是习惯
- 这篇文章主要介绍了Spring-boot的debug调试代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值