Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中用零填充右键_Java_String Formatting_Padding - Fatal编程技术网

Java中用零填充右键

Java中用零填充右键,java,string-formatting,padding,Java,String Formatting,Padding,对不起,如果这个问题已经提出了,我已经做了深入的搜索,什么也没有 现在,我知道: String.format("%05d", price); 将在左侧用零填充我的价格,因此价格为25将导致00025 如果我想把它们放在右边,结果是25000个?如何仅使用String.format模式执行此操作?您可以使用: String.format("%-5s", price ).replace(' ', '0') 我是否可以仅使用格式模式执行此操作 String.format使用Formatter.ju

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

现在,我知道:

String.format("%05d", price);
将在左侧用零填充我的价格,因此价格为25将导致00025

如果我想把它们放在右边,结果是25000个?如何仅使用String.format模式执行此操作?

您可以使用:

String.format("%-5s", price ).replace(' ', '0')
我是否可以仅使用格式模式执行此操作

String.format
使用
Formatter.justify
就像
String.printf
方法一样。 由此,您将看到输出空间是硬编码的,因此需要使用
字符串。替换

尝试以下操作:

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

请尝试阅读此文档,看看ApacheCommons库是否可以帮助您

我编写了如下代码:

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);
}
归功于,这是解决问题的有效方法:

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@

如果您不想使用格式或任何函数,请使用此简单技巧
System.out.println(价格+000”)

将此功能用于右填充

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

我去过那里。有一些解决办法。但是,没有一个像上面那样只使用一个模式就可以立即完成任务的。明白了,让我们继续使用replace函数。非常感谢。这是一个有用的答案。谢谢:我认为这不是一个好答案。它是不可维护和通用的。使用可重用函数更合适。OP已请求使用String.format模式完成此操作。这种方法虽然解决了需求,但并不灵活。开发商想要2500或250000,而不是25000。