java格式化字符串位数_固定长度、截断与填充方法汇总-java教程

String.format()不截断超长字符串,仅通过%.Ns实现截断+填充;%-w.Ns可左对齐、截取前N字符并补空格至宽度w;需手动处理null及Unicode边界问题。

Java中用String.format()控制字符串长度:截断还是填充?

String.format()本身不直接支持截断,但能通过格式化语法实现左/右填充和固定宽度。关键在%s前加宽度修饰符:%5s表示至少占5字符,右对齐、左侧补空格;%-5s左对齐、右侧补空格。若原字符串超长(如"hello world"塞进%5s),它会原样输出,**不会截断**——这是最容易踩的坑。

常见误用场景:想把用户昵称统一显示为6位,用String.format("%6s", nick)结果发现超长昵称依然显示10个字。此时必须手动截断:

String.format("%6s", nick.substring(0, Math.min(nick.length(), 6)))

用java.text.MessageFormat做带截断的模板化填充

MessageFormat比String.format()更灵活,支持自定义格式子句,但默认也不含截断逻辑。需配合substring()或正则预处理。例如要保证每个字段最多4字符、不足则右补'0':

String padded = String.format("%-4.4s", nick); // %-4.4s:最小宽4,最大截取4 → 实现“截断+左对齐”

这里.4是精度(precision)修饰符,对字符串即最大长度,配合-可同时控制对齐与截断。注意:%.4s不指定最小宽度时,只截不断,也不填充。

立即学习“Java免费学习笔记(深入)”;

  • %10.5s:至少10宽,最多取前5字符 → 实际效果是左补空格到10位,内容只显示5字符(相当于先截后填)
  • %-10.5s:左对齐,先截5字符,再右补空格到总长10
  • 精度值大于字符串长度时,无截断效果,仅按原长参与对齐

Apache Commons Lang的StringUtils:一行解决截断+填充

如果项目已引入commons-lang3,StringUtils提供开箱即用的方法:leftPad()、rightPad()只负责填充;abbreviate()负责截断;三者组合才能闭环。最简方案是StringUtils.leftPad(StringUtils.abbreviate(str, maxWidth), maxWidth, padChar),但要注意abbreviate()会在末尾加"...",不适合纯截断场景。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » java格式化字符串位数_固定长度、截断与填充方法汇总-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4002903+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4002903+
  • 本周更新: 0+
  • 最后更新: 2026-03-16