【问题标题】:Having problems formatting Strings to a specific precision将字符串格式化为特定精度时出现问题
【发布时间】:2017-06-27 23:40:35
【问题描述】:

我正在尝试格式化字符串并将其写入文件。请参阅下面的代码

StringBuilder sb=new StringBuilder();
sb.insert(0, String.format("%-30s", recDataWithWarId.getRiaFirmName() != null ? recDataWithWarId.getRiaFirmName() : " "));

我想要达到的条件是(我已经掌握了下面提到的条件1):

  1. 如果 recDataWithWarId.getRiaFirmName() 的长度不是 30 个字符或为 null,我想用空格填充其余空格。

  2. 如果长度大于 30,我还想将 recDataWithWarId.getRiaFirmName() 限制为 30,并且我希望此代码会自动执行此操作。

什么是实现这两个条件的最有效方法,而不必编写冗长的代码,一个用于子字符串,一个用于格式化?我必须在多个地方执行此操作,因为这是一个相当大的文本文件。

【问题讨论】:

  • 使用子字符串编写函数。即使它更长的代码并不意味着它更慢。
  • 同样注意:不要试图在一行代码中做太多事情,这不会让你看起来更聪明,而且它肯定更难阅读、维护和调试。跨度>

标签: java regex string substring


【解决方案1】:

您需要在格式字符串中指定精度和宽度。你要"%-30.30s"

第一个-30 指定该值将在右侧填充30 个字符。小数点后的30 指定最大字符数。

【讨论】:

  • 谢谢@大卫华莱士。这是我一直在寻找的宾果游戏答案。
猜你喜欢
  • 2020-02-04
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2017-04-09
  • 1970-01-01
  • 2020-02-02
相关资源
最近更新 更多