在Java中用零填充

Posted

技术标签:

【中文标题】在Java中用零填充【英文标题】:Right padding with zeros in Java 【发布时间】:2012-10-09 09:00:34 【问题描述】:

对不起,如果这个问题已经提出,我已经进行了深入的搜索,但什么也没有。

现在,我知道了:

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

将在左边用零填充我的价格,因此价格为 25 将导致 00025

如果我想把它们加到右边,结果是 25000 怎么办?如何使用 only String.format 模式做到这一点?

【问题讨论】:

***.com/q/388461/1374678 我去过那里。有一些解决方案。但没有人只使用上述模式即可立即完成这项工作 【参考方案1】:

你可以使用:

String.format("%-5s", price ).replace(' ', '0')

我可以只使用格式模式吗?

String.format 使用 Formatter.justify 就像 String.printf 方法一样。 从这个post你会看到输出空间是硬编码的,所以使用String.replace是必要的。

【讨论】:

知道了,让我们继续使用替换功能。谢谢! 这是有用的答案。谢谢:D 我认为这不是一个好的答案。它不可维护和通用。使用可重用函数更合适。【参考方案2】:

试试这个:

String RightPaddedString = org.apache.commons.lang.StringUtils.rightPad(InputString,NewStringlength,'paddingChar');

【讨论】:

【参考方案3】:

请尝试阅读此文档,看看apache commons库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);

【讨论】:

【参考方案4】:

感谢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@

【讨论】:

【参考方案5】:

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

【讨论】:

OP 要求它需要使用 String.format 模式来完成。这种方法虽然解决了需求,但不够灵活。开发人员想要 2500 或 250000 而不是 25000。【参考方案6】:

将此函数用于右填充。

private String rightPadding(String word, int length, char ch) 
   return (length > word.length()) ? rightPadding(word + ch, length, ch) : word;

怎么用?

rightPadding("25", 5, '0');

【讨论】:

【参考方案7】:

就我而言,我只使用本机 Java 解决了这个问题。

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

所以打印出来:123400000

【讨论】:

以上是关于在Java中用零填充的主要内容,如果未能解决你的问题,请参考以下文章

在JavaScript中用前导零填充数字[重复]

如何在 Netezza SQL 中用前导零填充整数

如何在 Python 3 中用前导零填充字符串 [重复]

如何在 Java 中用下划线填充数字?

在 Java Swing 中用图案填充矩形

在 postgreSQL 中向左填充零