[英]Java String new line with specific logic and without string format
如下代碼:
String a = "100.00";
String b = "10.00";
String c= "5.00";
String value = a+ "\n"+ b +"\n" +c;
System.out.println(value);
打印:
100.00
10.00
5.00
我需要以不固定任何字符串格式庫(帶邏輯)的小數點位置固定的格式輸出:
100.00
10.00
5.00
變量值來自數據庫,要求顯示的小數點在同一位置,垂直顯示。
這是一個使用流的示例; 可能會更有效率,但是我很開心。
假設您所顯示的所有小數點均為2位,僅供參考。 可以修改。
String a = "100.00";
String b = "10.00";
String c= "5.00";
List<String> strings = Arrays.asList(a, b, c);
final int maxLen = strings.stream().map(String::length).reduce(Math::max).get();
strings.forEach(s -> {
System.out.println(Stream.generate(() -> " ").limit(maxLen - s.length()).collect(Collectors.joining()) + s);
});
結果:
100.00
10.00
5.00
我還將pthe 3示例放入列表中,以便可以在任意數量的元素上使用。
沒有Java 8
String a = "100.00";
String b = "10.00";
String c = "5.00";
List<String> strings = Arrays.asList(a, b, c);
int maxLen = -1;
for (String s : strings) maxLen = Math.max(maxLen, s.length());
for (String s : strings) {
String spaces = "";
for (int i = 0; i < maxLen - s.length(); ++i) {
spaces += " ";
}
System.out.println(spaces += s);
}
我不知道“不使用任何String格式庫”的具體含義,但是...現在,我們來了解一下“庫”的含義的語義論證。 您正在格式化字符串。 如果我對您的面值提出疑問,那么您實際上是在問不可能的問題:一個人如何格式化字符串而不格式化字符串?
我將假設您的意思是:不添加第三方依賴項。
在這種情況下,如果您將doubles
(或BigDecimal
或float
)作為輸入:
String.format("%6.2f", 100.00);
String.format("%6.2f", 10.00);
String.format("%6.2f", 5.00);
(6?是; 6!6是最少要打印的總字符數。您要在分隔符前加上3位數字,然后在分隔符后加上2位數字,總共要有6個數字,因此是6。)
如果您將字符串作為輸入,那么顯然您是在要求對它們進行右對齊嗎? 好吧,你可以這樣做:
String.format("%6s", "100.00");
String.format("%6s", "10.00");
String.format("%6s", "5.00");
注意:為方便起見, System.out.printf("%6s\\n", "100.0");
System.out.println(String.format("%6s", "100.0"));
縮寫System.out.println(String.format("%6s", "100.0"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.