簡體   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