在将字符串格式化为特定精度时遇到问题

问题描述:

我想格式化字符串并将其写入文件。见下面在将字符串格式化为特定精度时遇到问题

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

我想实现的条件我的代码是(我已经在下面提到的条件1为手柄):

  1. 如果recDataWithWarId.getRiaFirmName()的长度或空我还不到三字符想用空格填充剩余的空格。

  2. 我还想限制recDataWithWarId.getRiaFirmName()为30如果长度大于30,我希望这个代码会自动执行。

什么是实现这两个条件,而无需编写冗长的代码一个字符串和一个格式化的最有效的方法是什么?我必须在多个地方完成它,因为这是一个相当大的文本文件。

+2

使用子字符串编写函数。即使更长的代码并不意味着它更慢。 – 2017-02-09 19:53:42

+0

并且在同一个注释中:不要试图在一行代码中做太多事情,它不会让你看起来更聪明,而且读取,维护和调试确实更难。 – alfasin

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

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

+0

谢谢@David Wallace。这是我正在寻找的宾果答案。 – shashwatZing

我的建议不会让字符串格式化和三元表达式变得太可爱。只需使用适当的字符串方法按摩数据,以便您有一个标准化的字符串可供显示或记录。

其实,我建议这正是像toString()getDisplayString()这样的方法。

由于我们不知道“recDataWithWarId”是什么,所以您可能无法做到这一点。但是,在使用它作为输出之前,你当然可以采取一个字符串并进行适当的调整。

+0

典型。提供来自多年来一直这样做并获得低价的人的真实建议。是的,你可以用String.format做到这一点。问题是你应该?在很多情况下,答案是否定的。 – jdv