java字符串数字补齐位数
在java中实现字符串位数补齐主要有以下几种常用方法,可根据不同场景选择使用:
一、使用string.format()方法
- 1. 左补齐(右侧补空格)
string result = string.format("%10s", "hello"); // 总长度10,左侧补空格:ml-citation{ref="5" data="citationlist"}
- 2. 右对齐(左侧补零)
string str = string.format("%06d", 12345); // 输出"012345":ml-citation{ref="5,7" data="citationlist"}
- 3. 自定义补位字符
通过替换空格实现其他字符补齐:
string res = string.format("%5s", "gr").replace(' ', '1'); // 输出"111gr":ml-citation{ref="4" data="citationlist"}
二、apache commons lang库方法
- 使用stringutils.leftpad()实现左补齐:
string value = stringutils.leftpad("3123123", 10, "0"); // 输出"0003123123":ml-citation{ref="4" data="citationlist"}
三、java 11+的string.repeat()方法
- 适用于已知需要补足的具体字符数:
string padding = " ".repeat(16 - originalstr.length()); string result = originalstr + padding; // 右补空格至16位:ml-citation{ref="3" data="citationlist"}
四、循环遍历实现
- 通过stringbuilder动态构建补位字符串:
public static string padstring(string input, char padchar, int length) { stringbuilder result = new stringbuilder(input); while (result.length() < length) { result.insert(0, padchar); // 左补指定字符:ml-citation{ref="1" data="citationlist"} } return result.tostring(); }
五、numberformat数字格式化
- 适用于数字类型补零:
numberformat nf = numberformat.getinstance(); nf.setminimumintegerdigits(6); // 设置最小整数位数 string formatted = nf.format(123); // 输出"000123":ml-citation{ref="5" data="citationlist"}
选择建议:
- 原生推荐:优先使用string.format(),代码简洁且性能较好57
- 第三方库场景:若项目中已引入apache commons lang,推荐stringutils.leftpad()4
- 超长补位需求:java 11+的repeat()方法更高效3
- 历史兼容性:低版本java可使用循环遍历实现12
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论