如何简化根据int值为String.valueOf(int)结果左侧补固定长度0的操作
Java 整型转固定长度前导零字符串的简洁实现
你需要将1~10000范围内的整型值转换为总长度5位、不足位补前导零的字符串,除了多分支判断拼接的实现外,有多种更简洁的写法:
方案1:使用String.format(JDK 1.5+ 通用方案)
这是最常用的实现方式,直接利用格式化字符串语法即可完成需求:
String foo = String.format("%05d", bar);
语法说明:
%d表示格式化的参数为整型5表示最终字符串的总长度为5位0表示长度不足时用前导零填充
该写法天然适配你1~10000的取值范围:bar=22时输出00022,bar=10000时刚好输出10000,完全符合要求。
方案2:使用DecimalFormat
如果需要频繁做同规则格式化,可以用格式化工具类实现:
import java.text.DecimalFormat; // 初始化格式化规则,5位全补零 DecimalFormat df = new DecimalFormat("00000"); String foo = df.format(bar);
方案3:使用String.repeat(JDK 11+)
版本允许的情况下也可以手动计算补零长度,语义更直观:
String numStr = String.valueOf(bar); String foo = "0".repeat(5 - numStr.length()) + numStr;
注:你原有的多分支实现存在变量作用域问题:四个if块内分别定义
foo变量,块外无法直接访问到该变量,更简洁的实现也规避了这个问题。
内容的提问来源于stack exchange,提问作者Thanh Hiếu Nguyễn
相关产品推荐
相关产品推荐

