String.format()的详细用法

2023-05-16

问题

在开发中一段字符串的中间某一部分需要可变的。如:文本要展示 “张三用户来自深圳,年龄 18,性别 男…”
其中的 张三 是用户名,每个用户都是不一样的;
地区 深圳 为可变的String数据;年龄 18 为可变的int数据;性别 男 为可变的String数据。

解决方式

使用 String.format方法来解决。

public static void main(String[] args) {
    String name = "张三";
    String city = "深圳";
    int age = 18;
    String sex = "男";
    String format = String.format("%s用户来自%s,年龄 %d,性别 %s.....", name, city, age, sex);
    System.out.println(format);
}

String.format()说明

1. String.format()字符串两个重载方法

  • format(String format, Object… args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
  • format(Locale locale, String format, Object… args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

2. 占位符类型

转换符详细说明示例
%s字符串类型“值得点赞”
%c字符类型‘h’
%b布尔类型true
%d整数类型(十进制)88
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型7.777
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)
%h散列码
%d%百分比类型
%n换行符
%tx日期与时间类型

示例说明

public static void main(String[] args) {
        String str;
        // %s
        str = String.format("Hi,%s", "布鲁斯");
        System.out.println(str);
        // %c   %n
        str = String.format("字母c的大写是:%c %n", 'C');
        System.out.println(str);
        // %b
        str = String.format("布尔结果是:%b", 3>2);
        System.out.println(str);
        // %d
        str = String.format("100的一半是:%d", 100/2);
        System.out.println(str);
        // %x
        str = String.format("100的16进制数是:%x", 100);
        System.out.println(str);
        // %o
        str = String.format("100的8进制数是:%o", 100);
        System.out.println(str);
        // %f
        str = String.format("50元的书打8.5折扣是:%f 元", 50 * 0.85);
        System.out.println(str);
        // %a
        str = String.format("上面价格的16进制数是:%a", 50 * 0.85);
        System.out.println(str);
        // %e
        str = String.format("上面价格的指数表示:%e", 50 * 0.85);
        System.out.println(str);
        // %g
        str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.85);
        System.out.println(str);
        // %d%
        str = String.format("上面的折扣是:%d%%", 85);
        System.out.println(str);
        // %h
        str = String.format("字母A的散列码是:%h",'A');
        System.out.println(str);
    }

输出结果

在这里插入图片描述

3. 常用标识

标识说明
+为正数或负数添加符号
0在数字位数不够的地方补上0
空格在位数不够的地方补上空格
对数字分组,三位一隔,只可以用于十进制
(使用括号将去掉负号的负数包含进来
#让十六进制的数字加上OX,八进制的数字加上o;
辅助%x和%o的使用,相当于一种对数字进制的补充说明提示
<格式化前一个转换符锁描述的参数
-左对齐,不够位数的地方补上空格

示例说明

public static void main(String[] args) {
    // +
    String str;
    str = String.format("数字的正负表示:%+d %d %+d %d",8,8,-8,-8);
    System.out.println(str);
    // -
    str = String.format("左对齐:%-6d",8);
    System.out.println(str);
    // 0
    str = String.format("缺位补零:%06d",8);
    System.out.println(str);
    // 空格
    str = String.format("缺位补空格:% 6d",8);
    System.out.println(str);
    str = String.format("缺位补空格:% 6d",-8);
    System.out.println(str);
    // ,
    str = String.format("数字分组:%,d",123456789);
    System.out.println(str);
    // (
    str = String.format("括号用法:%(d",-8888);
    System.out.println(str);
    str = String.format("括号用法:%(d",8888);
    System.out.println(str);
    // #
    str = String.format("#括号用法(十六进制):%#x",12);
    System.out.println(str);
    str = String.format("#括号用法(八进制):%#o",12);
    System.out.println(str);
    // <
    str = String.format("<括号用法:%f %<3.1f",3.14,3.2);
    // "%<3.1f"作用的对象是前一个"%f"所作用的对象
    System.out.println(str);
}

输出结果

在这里插入图片描述

4. 日期转换符

标志说明
c包括全部日期和时间信息
F"年-月-日"格式
D'月/日/年’格式
r“HH:MM:SS PM”格式(12时制)
T“HH:MM:SS”格式(24时制)
R“HH:MM”格式(24时制)

示例说明

public static void main(String[] args) {
    String str;
    // c
    str = String.format("全部日期和时间信息:%tc",new Date());
    System.out.println(str);
    // F
    str = String.format("年-月-日格式:%tF",new Date());
    System.out.println(str);
    //D
    str = String.format("月/日/年格式:%tD",new Date());
    System.out.println(str);
    //r
    str = String.format("HH:MM:SS PM格式(12时制):%tr",new Date());
    System.out.println(str);
    //T
    str = String.format("HH:MM:SS格式(24时制):%tT",new Date());
    System.out.println(str);
    //R
    str = String.format("HH:MM格式(24时制):%tR",new Date());
    System.out.println(str);
    // %.2f保留两位小数
    str = String.format("3.14保留两位小数:%.2f",3.141);
    System.out.println(str);
}

输出结果

在这里插入图片描述


如果有收获! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String.format()的详细用法 的相关文章

  • 将 h1 元素的内容复制到剪贴板?

    所以 我做了一个翻译器 但效果不是很好 但无论如何 它正在工作 我想尝试添加一些可以复制结果的内容 有没有办法做到这一点 以下是我的代码 提前致谢 我知道有一种方法可以通过输入来完成此操作 但我不确定是否可以通过标题来完成 var myTe
  • mysql 如何比较 dd-mon-yy 格式的日期

    如何比较格式中的日期dd mon yy 例如 2014 年 11 月 10 日 gt 2013 年 10 月 7 日 select expiration date from grocery where expiration date lt
  • 字符串数组初始化

    这是另一个的延续question https stackoverflow com questions 7834294 string array conversion I have 考虑以下代码 char hi hello char arra
  • 使用 Hibernate 映射 Map

    似乎在我看来 到处都有过时的版本 不再起作用 我的问题看起来很简单 我有一个 Java 类 它映射到 derby 数据库 我正在使用注释 并成功地在数据库中创建了所有其他表 但在这个特定的示例中 我只需要一个 Map 它不使用任何其他类 只
  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操
  • 自动将变量名称添加到列表的元素[重复]

    这个问题在这里已经有答案了 我有一个模型列表 为了使代码更易于维护 因此可以方便地添加和删除模型 我希望有一个地方来存储它们及其名称 为此 我必须解决以下命名问题 上游 我生成模型的方式比以下方式效率低 如果是这样压缩的 我会assign他
  • Java:带有 unicode 字符的 String.toCharArray()

    我知道 char 不能包含 Unicode 字符 例如 char c u1023 那么我该怎么做 String s ABCDEFG u1023 char c s toCharArray 出于性能原因 我想将 s 转换为 CharArray
  • PHP Soap Server:使用字符串(xml 字符串)而不是 WSDL 文件(指向它的 url)实例化

    Soap Server的PHP页面 我见过 http www php net manual en soapserver soapserver php http www php net manual en soapserver soapser
  • 如何计算文件中单词的长度?爪哇

    我正在尝试编写一个代码来计算文件中特定长度的单词数 例如 How are you 会打印 Proportion of 3 letter words 100 3 words 我想计算长度为 1 2 3 4 5 6 7 8 9 10 11 12
  • 在 SQLite 数据库中存储日期时间值的最佳方式(Delphi)

    我将把日期时间值存储在 SQLite 数据库中 使用 Delphi 和 DISqlite 库 数据库的本质是它永远不需要在计算机或系统之间传输 因此互操作性不是一个限制 相反 我的重点是阅读速度 日期时间字段将被索引 我将对其进行大量搜索
  • SQL中StringBuilder的正确使用方法

    我刚刚在我的项目中发现了一些像这样的 sql 查询构建 return new StringBuilder select id1 id2 from table toString 做这个StringBuilder实现其目标 即减少内存使用 我对
  • 将 __DIR__ 常量与字符串连接作为数组值,该数组值是 PHP 中的类成员

    谁能告诉我为什么这不起作用 这只是我在其他地方尝试做的事情的一个粗略的例子 stuff array key gt DIR value 但是 这会产生错误 PHP Parse error syntax error unexpected exp
  • 有没有办法将 Excel 单元格条目转换为一致的日期和时间格式?

    我正在处理雨量计数据记录器生成的 csv 文件中的一些雨量计数据 我发现日期和时间的记录不一致 以以下两种格式之一交替显示 Format 1 mm dd yyyy hh mm 24 hour clock or Format 2 mm dd
  • 为什么 as.character() 返回日期列表中的整数?

    我惊讶地发现 R 中出现以下行为 as character c Sys Date gt 1 2018 02 05 as character list Sys Date gt 1 17567 为什么会出现这种情况 也就是说 显然 17567
  • 非法转义字符“\”

    我想在链接末尾获取名称 所以我这样做了 if invName substring j k equals copyf invName substring 0 j Eclipse 说字符串文字没有用双引号正确关闭 如何将字符串与此字符进行比较
  • ToUpperInvariant() – MSDN 的建议是否错误?

    In 在 NET Framework 中使用字符串的最佳实践 https msdn microsoft com en us library dd465121 v vs 110 aspx 字符串比较OrdinalIgnoreCase http
  • 通过删除连续的重复项来减少字符串长度

    我有一个包含 2 个字段的 R 数据框 ID WORD 1 AAAAABBBBB 2 ABCAAABBBDDD 3 我想通过仅保留字母而不是重复中的重复项来简化具有重复字母的单词 e g AAAAABBBBB应该给我AB and ABCAA
  • PHP 中的多行字符串文字

    考虑 xml l xml vv echo xml 这将回响vv 为什么以及如何为诸如此类的事情执行多行字符串文字简单XML https en wikipedia org wiki SimpleXML etc Well xml l vv Wo
  • 每第 n 个字符分割一个字符串

    在 JavaScript 中 这就是我们如何在每 3 个字符处分割一个字符串 foobarspam match 1 3 g 我正在尝试弄清楚如何在 Java 中做到这一点 有什么指点吗 你可以这样做 String s 1234567890
  • strlen - 字符串的长度有时会增加 1

    我正在做一些 C 智力题 在大多数情况下 我能够找到正确的答案 但我遇到了问题 我通过使用编译器知道正确的答案 但我不知道原因 看一下代码 char c abc 012 0x34 什么会strlen c 返回 使用标准 C 编译器 我的编译

随机推荐

  • SpringCloud(十)Config配置中心

    微服务就意味着要将单体应用中的业务拆分成一个个子服务 xff0c 每个服务的粒度相对较小 xff0c 因此系统中会出现大量的服务 由于每个服务都需要必要的配置信息才能运行 xff0c 所以一套集中式的 动态的配置管理设施是必不可少的 Spr
  • SpringCloud(十一)Bus消息总线、Stream消息驱动

    一 Bus消息总线 需求 xff1a 分布式自动刷新配置功能 xff1b 解决 xff1a SpringCloud Bus配合Spring cloud Config使用可以实现配置的动态刷新 1 概述 定义 xff1a Spring Clo
  • MySQL数据库面试题(2021最新版)

    文章目录 1 数据库基础知识为什么要使用数据库什么是SQL 什么是MySQL 数据库三大范式是什么MySQL有关权限的表都有哪几个MySQL的binlog有有几种录入格式 xff1f 分别有什么区别 xff1f 2 引擎MySQL存储引擎M
  • SpringCloud(十二)Sleuth分布式请求链路追踪

    为什么会出现这个技术 xff1f 在微服务框架中 xff0c 一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果 xff0c 每个前段请求都会形成一条复杂的分布式服务调用链路I链路中的任何一环出现高延时
  • SpringCloud(十三)Alibaba Nacos服务注册和配置中心

    文章目录 SpringCloud Alibaba 简介1 为什么会出现SpringCloud Alibaba2 SpringCloud Alibaba概念3 主要功能4 下载地址5 主要组件 Nacos简介1 概念2 能干什么3 下载地址4
  • Spring Cloud 五大组件(整合业务场景说明)

    文章目录 1 什么是微服务2 Springcloud是什么 Springcloud中的组件有哪些 xff1f 3 组件分别描述下它的原理 xff1f 4 业务场景介绍Eureka xff08 注册发现 xff09 Fegin xff08 远
  • Ubuntu18中调用cv2.imshow及PIL库遇到的bug “: cannot connect to X server”及display-im6.q16: unable to open X。。。

    在Ubuntu18中用Python写一个有关opencv的代码 xff0c 用到了cv2 imshow xff0c 但是运行到这里就会报错 xff1a cannot connect to X server 而我把cv2 imshow注释掉就
  • SpringCloud Alibaba-Sentinel 实现熔断与限流

    文章目录 1 为什么要引入Sentinel xff1f 分布式系统遇到的问题解决方案 2 Alibaba SentinelSentinel是什么Sentinel和Hystrix对比Sentinel快速开始Sentinel资源保护的方式 启动
  • JMeter下载安装及入门教程

    文章目录 JMeter介绍准备工作JMeter下载及环境配置下载配置环境具体使用 JMeter介绍 JMeter使用了不同技术和协议 xff0c 是一款可以进行配置和执行负载测试 性能测试和压力测试的工具 负载测试 性能测试和压力测试概念
  • 谷粒商城【商城系统】完整总结

    文章目录 项目运行的步骤项目源码地址模块说明商城项目基础篇总结项目知识点总结效果图展示 商城项目高级篇总结项目知识点总结效果图展示 项目中遇到的问题1 node版本与sass版本不对应2 测试单元的 64 Test 前面没有运行图标3 前端
  • 《阿里云服务器搭建》------ 安装tomcat

    Tomcat服务器安装 1 官网下载 Tomcat官网下载 xff1a https tomcat apache org download 80 cgi 将 apache tomcat 9 0 41 tar gz 的安装包下载到本地 xff0
  • 《阿里云服务器搭建》------搭建SVN服务

    文章目录 1 查看和卸载SVN2 安装SVN3 建立SVN版本库4 修改配置文件1 修改authz文件2 修改passwd文件3 修改svnserve conf文件 5 启动与停止6 windows客户端检出项目 1 查看和卸载SVN sp
  • 尚医通【预约挂号系统】总结

    这里写目录标题 1 项目介绍2 技术点3 业务流程4 项目架构5 项目源码 xff08 包含sql xff09 6 启动步骤7 项目模块说明8 项目功能总结9 效果图后台管理端前端展示端数据库 1 项目介绍 尚医通即为网上预约挂号系统 xf
  • 谷粒商城项目笔记总结(1/2)

    文章目录 商城项目 基础篇1 环境搭建2 MyBatis plus引入MyBatis plus的步骤 3 SpringCloud AlibabaNacos注册中心Nacos配置中心Fegin 声明式远程调用Gateway API网关 4 商
  • 利用natapp做内网穿透

    有时候我们自己做个小网站 xff0c 或者开发微信公众号做测试时 xff0c 因为没有公网ip而犯难 xff0c 毕竟买一台云服务器带独立ip的 xff0c 加上域名是一笔不小的开支 这时如果有一个内网穿透工具 xff0c 让自己本地电脑充
  • 权限管理系统【SpringBoot + Vue + SpringSecurity】

    文章目录 项目介绍技术选型环境要求项目结构表结构项目地址展示效果图 项目介绍 基于Springboot 构建的 前后端分离 通用权限管理系统 技术选型 后端技术 Spring Boot xff0c MyBatis plus xff0c Sp
  • JVM虚拟机【面试看这一篇就足够了】

    文章目录 前言内存结构说说JVM内存整体的结构 xff1f 线程私有还是共享的 xff1f 什么是程序计数器 xff08 线程私有 xff09 xff1f 什么是虚拟机栈 xff08 线程私有 xff09 xff1f 什么是本地方法栈 xf
  • 在Ubuntu18上用LibTorch(非darknet)部署YOLOv4的填坑之路(附源码)

    目录 坑一 xff1a 从官网下载的LibTorch库是不带torchvision的 坑二 xff1a Python的PIL库与opencv库在图像处理上的差异值得注意 坑三 xff1a LibTorch对tensor的各种变换操作度相比P
  • 锁升级过程(无锁、偏向锁、轻量级锁、重量级锁)

    文章目录 Synchronized锁升级的背景Synchronized的性能变化Java5之前 xff0c 用户态和内核态之间的切换为什么每个对象都可以称为一把锁 xff1f Java6开始优化Synchronized Synchroniz
  • String.format()的详细用法

    问题 在开发中一段字符串的中间某一部分需要可变的 如 xff1a 文本要展示 张三用户来自深圳 xff0c 年龄 18 xff0c 性别 男 其中的 张三 是用户名 xff0c 每个用户都是不一样的 xff1b 地区 深圳 为可变的Stri