Java中的右侧补零

32

抱歉如果这个问题已经被提出,我进行了深入搜索但是没有找到答案。

现在,我知道:

String.format("%05d", price);

我想在价格左边填充零,使价格25变成00025

如果我想在右边填充,使结果为25000,我该如何使用String.format格式仅实现此功能?


2
https://dev59.com/53RC5IYBdhLWcg3wK9yV - rolve
我曾经也遇到过这个问题。有一些解决方案,但没有一个可以仅使用类似上述模式一次性完成工作的解决方案。 - Caina Santos
7个回答

55

你可以使用:

String.format("%-5s", price ).replace(' ', '0')
我可以仅使用格式模式来做到这点吗? String.format 使用 Formatter.justify 来对齐,就像 String.printf 方法一样。从这篇帖子中可以看到,输出空格是硬编码的,所以必须使用 String.replace

明白了,我们继续使用替换函数。谢谢! - Caina Santos
这是有用的答案。谢谢:D - S.J. Lim
我认为这不是一个好的答案。它不易于维护且不够通用。使用可重用的函数更加合适。 - Samet ÖZTOPRAK

9
试试这个:
String RightPaddedString = org.apache.commons.lang.StringUtils.rightPad(InputString,NewStringlength,'paddingChar');

3
请尝试阅读此文档,查看Apache Commons库中的{{link1:StringUtils}}是否可以帮助您。
我做了这样一个代码:
import org.apache.commons.lang3.StringUtils;

public static void main(String[] args)  {   
  String str = "123";
  str = StringUtils.leftPad(str,10,"0"); //you can also look the rightPad function.
  System.out.println(str);
}

2

在我的情况下,我只使用了本地的Java来解决这个问题。

StringBuilder sb = new StringBuilder("1234");
sb.setLength(9);
String test = sb.toString().replaceAll("[^0-9]", "0");
System.out.println(test);

所以它打印出来的是: 123400000。

1
使用此函数进行右填充。
private String rightPadding(String word, int length, char ch) {
   return (length > word.length()) ? rightPadding(word + ch, length, ch) : word;
}

如何使用?
rightPadding("25", 5, '0');

1

感谢beginnersbook.com提供的帮助,这是一个解决问题的有效方法:

public class PadRightTest {
  public static void main(String[] argv) {
    System.out.println("#" + rightPadZeros("mystring", 10) + "@");
    System.out.println("#" + rightPadZeros("mystring", 15) + "@");
    System.out.println("#" + rightPadZeros("mystring", 20) + "@");
  }

  public static String rightPadZeros(String str, int num) {
    return String.format("%1$-" + num + "s", str).replace(' ', '0');
  }
}

而输出结果为:
#mystring00@
#mystring0000000@
#mystring000000000000@

只有在您的“str”不包含空格的情况下,此方法才有效。 - simonalexander2005

0
如果你想不使用格式或任何函数,那么可以使用这个简单的技巧:System.out.println(price+"000");

OP要求使用String.format模式完成。虽然这种方法可以满足要求,但不够灵活。如果开发人员想要2500或250000而不是25000呢? - Soumya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接