String.format正常输出%

有时候使用String.format格式化数据希望得到如下结果:

String str = String.format("下载完成%s%", "50.25");
System.out.printf(str);

这样干的结果竟然是报错啦

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '%'
    at java.util.Formatter.checkText(Formatter.java:2547)
    at java.util.Formatter.parse(Formatter.java:2533)
    at java.util.Formatter.format(Formatter.java:2469)

其实原因很简单,%在此处是特殊字符,需要转义的,改成如下写法就OK了。

String str = String.format("下载完成%s%%", "50.25");
System.out.printf(str);

当然这只是其中一种解决办法而已,我们还可以通过其他技巧来处理。比如

String str = String.format("下载完成%1$s%2$s", "50.35", "%");
System.out.println(str);

顺便整理一下转换符实现不同数据类型到字符串,方便查阅

转换符 说明 示例
%s 字符串类型 github
%c 字符类型 c
%b 布尔类型 true
%d 整数类型(十进制) 1024
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.66
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的) ---
%h 散列码 ---
%% 百分比类型 ---
%n 换行符 ---
%tx 日期与时间类型(x代表不同的日期与时间转换符) ---
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,764评论 18 399
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 10,949评论 0 11
  • 流程图大体上分为三种,业务流程图、功能流程图、页面流程图,下面详细介绍一下每种流程图。 1、业务流程图 ...
    野马王一点阅读 5,445评论 4 18
  • 我心爱的B站阵亡了,想哭
    违愿阅读 166评论 0 0