JAVA字符串占位符使用方法实例

 更新时间:2022年11月28日 15:38:14   作者:旷野历程  
今天同事又问起类似符串占位符使用的功能,所以下面这篇文章主要给大家介绍了关于JAVA字符串占位符使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

使用 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()方法,第一个参数为字符串,后面依次为替换占位符的字符串。 

总结

到此这篇关于JAVA字符串占位符使用的文章就介绍到这了,更多相关JAVA字符串占位符使用 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)

    IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)

    这篇文章主要给大家推荐介绍了IntelliJ IDEA 15款超级牛逼插件,这15款插件都是自用的,真的非常推荐,需要的朋友可以参考下
    2020-11-11
  • 详细分析Java Lambda表达式

    详细分析Java Lambda表达式

    这篇文章主要介绍了Java Lambda表达式的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 深入探究Spring底层核心原理

    深入探究Spring底层核心原理

    理解IOC与AOP的实现机制,优化应用性能与可维护性。Spring通过IOC容器管理Bean,AOP实现切面编程,支持事务管理、ORM框架等。深入理解Spring原理,可以帮助我们更好地使用Spring框架,提高开发效率与质量
    2023-04-04
  • java基础-给出一个随机字符串,判断有多少字母?多少数字?

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    这篇文章主要介绍了java基础-给出一个随机字符串,判断有多少字母?多少数字?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java流形式返回前端的实现示例

    Java流形式返回前端的实现示例

    ​ Java后端开发项目时,需要给前端传一些数据,本文主要介绍了Java流形式返回前端的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java校验是否为连续的区间问题

    Java校验是否为连续的区间问题

    这篇文章主要介绍了Java校验是否为连续的区间问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Mybatis使用注解实现复杂动态SQL的方法详解

    Mybatis使用注解实现复杂动态SQL的方法详解

    当使用 MyBatis 注解方式执行复杂 SQL 时,你可以使用 @Select、@Update、@Insert、@Delete 注解直接在接口方法上编写 SQL,本文给大家介绍了Mybatis如何使用注解实现复杂动态SQL,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • Spring源码解密之自定义标签与解析

    Spring源码解密之自定义标签与解析

    这篇文章主要给大家介绍了关于Spring源码解密之自定义标签与解析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • 关于mybatis callSettersOnNulls 配置解析

    关于mybatis callSettersOnNulls 配置解析

    这篇文章主要介绍了关于mybatis callSettersOnNulls 配置,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-06-06
  • Spring Boot配置元数据方法教程

    Spring Boot配置元数据方法教程

    这篇文章主要介绍了Spring Boot配置元数据方法教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论