[英]Java - How to replace spaces of formatting with decimals in printf?
我想打印出一個項目列表,在第一個文本和最終變量之間有一行句號或省略號,每邊都有一個空格。 因此,如果間距為三個或更多,則中間應該有一個句點。 如果可能的話,我想在 printf 中執行此操作; 使用格式化。 我知道如果我在寬度前面放一個 0 作為標志,那么多余的字符將被視為零,但我希望零作為小數點。
可以這樣做嗎?
示例代碼:
System.out.printf("Egg Count: %9d%n", 300); //list.getNumberOfEggs()
System.out.printf("Chicken Count: %5d%n", 1378); //list.getNumberOfChickens()
System.out.printf("Corn Oil Count: %4d%n", 619); //list.getNumberOfCornOil()
System.out.printf("Orange Count: %6d%n", 2000); //list.getNumberOfOranges()
樣本 Output:
Egg Count: 300
Chicken Count: 1378
Corn Oil Count: 619
Orange Count: 2000
所需 Output:
Egg Count: ..... 300
Chicken Count: 1378
Corn Oil Count: 619
Orange Count: . 2000
我找到了 JS - Separating a string with periods to meet certain character length這有點相似,但不是我在使用格式化時要找的東西。
我還找到了 Change the default padding character in Java printf? 可用於將空格替換為小數位,但前提是上述 printf 在冒號后拆分。 這也沒有解決冒號之后和第一個數字之前的空格問題; 也許這可以通過正則表達式/正則表達式以某種方式完成?
使用String.repeat(int times)
重復.
基於位數的字符。
System.out.printf("Egg Count: %s %d%n",".".repeat(8-String.valueOf(300).length()), 300); //list.getNumberOfEggs()
System.out.printf("Chicken Count: %s %d%n",".".repeat(4-String.valueOf(1378).length()), 1378); //list.getNumberOfChickens()
System.out.printf("Corn Oil Count: %s %d%n",".".repeat(3-String.valueOf(619).length()), 619); //list.getNumberOfCornOil()
System.out.printf("Orange Count: %s %d%n",".".repeat(5-String.valueOf(2000).length()), 2000); //list.getNumberOfOranges()
您可以使用 StringBuilder 來填充所需的字符。
public static String padLeftCharacter(int inputInteger, int length, String padChar) {
String inputString = " " + inputInteger;
if (inputString.length() >= length) {
return inputString;
}
StringBuilder sb = new StringBuilder();
while (sb.length() < length - inputString.length()) {
sb.append(padChar);
}
sb.append(inputString);
return sb.toString();
}
System.out.println("Egg Count: " + padLeftCharacter(300, 9, "."));
System.out.println("Chicken Count: " + padLeftCharacter(1378, 5, "."));
System.out.println("Corn Oil Count: " + padLeftCharacter(619, 4, "."));
System.out.println("Orange Count: " + padLeftCharacter(2000, 6, "."));
結果
Egg Count: ..... 300
Chicken Count: 1378
Corn Oil Count: 619
Orange Count: . 2000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.