繁体   English   中英

在Java中用零填充

[英]Right padding with zeros in Java

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

现在,我知道了:

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

将在左边用零填充我的价格,所以 25 的价格将导致00025

如果我想将它们填充到右侧,结果是25000怎么办? 如何使用String.format模式来做到这一点?

你可以使用:

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

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

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

试试这个 :

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

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

归功于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@

使用此函数进行右填充。

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

如何使用?

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

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

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

所以它打印出来:123400000

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM