【问题标题】:Prepend zeros to int java [duplicate]将零添加到int java [重复]
【发布时间】:2023-03-08 18:40:01
【问题描述】:

如果字符串等效长度小于 6,我想在 int 前面添加零。类似于 String.format。示例:

int e = 21;
System.out.println(String.format("%06d", e)); //000021
int e = 3564;
System.out.println(String.format("%06d", e)); //003564

对于上述输入 210000356400,我需要在末尾添加零。是否已经实现了一些可以完成这项工作的东西,还是我需要自己编写代码?如果是这样如何处理可变长度?

【问题讨论】:

标签: java string


【解决方案1】:
while (e < 100_000) e *= 10;

不言自明。我认为没有比这更简单的方法了。

编辑: 由于e 可以为0,我将上面的语句包装成一个函数:

public static String pad(int input) {
  if (input == 0) return "000000";
  while (input < 100_000) input *= 10;
  return "" + input;
}

【讨论】:

  • 如果e0,你会怎么做? :)
  • 非常感谢。我没有想到这个简单的解决方案。十分钟后将接受答案。
  • @ROMANIA_engineer 也被编辑为处理 0。
  • @ROMANIA_engineer 好点,但与我的上下文无关,因为我的输入总是 > 0。
  • @SilviuBurcea 它也不处理负数。
【解决方案2】:

如果想做what Dimitri suggests 之类的事情,但又不想依赖外部库,可以编写一个小方法:

StringBuilder sb = new StringBuilder(6);
sb.append(e);
sb.append("000000", Math.min(sb.length(), 6), 6);
return sb.toString();

【讨论】:

    【解决方案3】:

    如果你可以使用StringUtils,你就可以使用rightPad方法:

    StringUtils.rightPad(String.valueOf(e), 6, "0");
    

    【讨论】:

    • 注意:这是第三方类。不是 Java API 的一部分。
    【解决方案4】:

    以下方法用提供的字符填充提供的字符串,直到达到字段宽度。

       public static String rightPad(String str, int fieldwidth, char c) {
          StringBuilder sb = new StringBuilder(str);
          while (fieldwidth > sb.length()) {
             sb.append(c);
          }
          return sb.toString();
       }
    

    示例:要用两个零填充 1234,请执行以下操作:

    int v = 1234;
    String padded = rightPad(Integer.toString(v), 6, '0');
    
    

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 2012-09-14
      • 2014-09-09
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多