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()的详细用法 的相关文章

  • 使用 str 方法替换 string 中的多个元素

    我正在尝试编写一个函数 它接受一串 DNA 并返回赞美 我已经尝试解决这个问题有一段时间了 并浏览了 Python 文档 但无法解决 我已经为该函数编写了文档字符串 以便您可以看到答案应该是什么样子 我在这个论坛上看到过类似的问题 但我无法
  • 未终止的字符串文字

    我有一个 php 脚本 可以在我的服务器上上传 mp3 文件 我使用 上传 有一个事件 onSelect 文档 http www uploadify com documentation events onselect 当文件上传时调用 使用
  • Windows-1251 到 UTF-8 代码

    我在 Windows 1251 代码表中有字符代码 如何获取UTF 8编码表中该字符的编码 例如 我有字符 在 Windows 1251 中编码等于 192 适当的 utf 8 代码等于 1040 我如何使用 Windows 1251 代码
  • 使用 JavaScript 替换字符串的最后一个字符

    我有一个很小的疑问 我尝试使用 concat charAt slice 等 但我不知道该怎么做 这是我的字符串 var str1 Notion Data Identity 我想更换最后一个 with a 它应该看起来像这样 var str1
  • 从字符串向量中删除方括号

    我有一个字符向量 其中每个元素都括在括号中 我想 去掉括号 只剩下字符串 所以我尝试 n c Dave Tony Sara paste n sep 不幸的是 由于某种原因这不起作用 在使用相同的代码之前我已经执行了相同的任务 并且不确定为什
  • 有效大括号 - CodeWars 挑战

    有一个对代码战的挑战 https www codewars com kata valid braces train javascript它要求您检查圆括号 方括号和大括号组成的字符串是否有效 如果所有大括号都与正确的大括号匹配 则认为一串大
  • 字符数组的文字字符串初始值设定项

    对于数组衰减为指针的情况 规则如下 出现在表达式中的 array of T 类型的左值 参见问题 2 5 衰减 有三个例外 为指向其第一个元素的指针 结果指针的类型是指向 T 的指针 例外情况是数组是 sizeof 或 运算符的操作数 或者
  • 如何在 Go 中表示可选字符串?

    我希望建模一个可以有两种可能形式的值 不存在或字符串 执行此操作的自然方法是Maybe String or Optional
  • 将指数数字字符串表示形式拆分为幂和指数

    我的字符串来自指数形式的资源 如下所示 2 我想知道是否有办法将其分为 var base 2 or even 2 this is also helpful since it can be parsed and var exponent 4
  • 根据字符串列表查找第一个可用的序列号?

    给定一个字符串列表 例如 apple01 apple02 and apple04 banana02 cherry01 你会如何想出first可用序列号each类型 也就是说 apple03如果我问apple or banana01如果我问b
  • 更改 Java 字符串中的日期格式

    I ve a String代表一个日期 String date s 2011 01 18 00 00 00 0 我想将其转换为Date并将其输出到YYYY MM DD format 2011 01 18 我怎样才能实现这个目标 好的 根据我
  • 展开字符串中的环境变量

    是否有一些 java 实用程序 可以扩展 和 env 字符串中的变量 就像 bin MY PATH gt home john bin dev null 谢谢 基本上 您想要使用环境变量进行字符串插值并扩展主目录 我不知道执行后者的简单方法
  • fgets 读取的最大大小

    Using fgets要输入字符串 我对读取的字符串长度有疑问 例如 考虑以下程序 char str 50 int i int len printf Enter name n fgets str 11 stdin len strlen st
  • PHP中用逗号分解复杂字符串

    我需要分割一个包含逗号的字符串 我已经找到了类似字符串的东西 str getcsv A B with a comma eh C 但我的字符串是这样的 例如值没有包含字符 A B one two C 我需要分解它并获得 array 3 0 g
  • 用于查找字符串差异的位运算

    我的以下字符串试图找出两个字符串之间的差异 但当它迭代字符串的长度时 速度非常慢 include
  • 为什么replaceAll在这行代码中不起作用? [复制]

    这个问题在这里已经有答案了 String weatherLocation weatherLoc 1 toString weatherLocation replaceAll how weatherLocation replaceAll wea
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 为什么不能用反斜杠结束原始字符串? [复制]

    这个问题在这里已经有答案了 我在这里很困惑 尽管原始字符串会转换每个 to 但是当这个 最后出现它会引发错误 gt gt gt r so m e te xt so m e te xt gt gt gt r so m e te xt Synt
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o

随机推荐

  • 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