Java給整數部分的字串加上千分位分隔符
阿新 • • 發佈:2019-01-03
本來想網上找個例子,結果讓人很失望,網上的大部分用的DecimalFormat 、NumberFormat,我隨便搞了一個長點的字串,發現大部分都有小數進度問題。
而且網上的人,都不測試的,寫的例子明顯不打算在生產上跑,所以還是自己寫了一個。
package com.test; import java.text.ParseException; import java.util.ArrayList; public class FormatNumber { /** * @Title: addThousandSeparator * @Description: 格式化數字為千分位 * @param text * @return 設定檔案,由於double的位數有限制,所以這裡自己拆分的方式來做。 * @return String 返回型別 */ public static String addThousandSeparator(String text) { if (text == null) { return null; } int index = text.indexOf("."); if (index > 0) { String integerPartial = text.substring(0, index); String decimalPartial = text.substring(index); return addThousandSeparatorForInteger(integerPartial) + decimalPartial; } else { return addThousandSeparatorForInteger(text); } } // 只給整數加千分位分隔符 public static String addThousandSeparatorForInteger(String text) { int index = text.indexOf("."); if (index != -1) { return text; } else { int length = text.length(); ArrayList<String> stringContainer = new ArrayList<String>(); while (length > 3) { stringContainer.add(text.substring(length - 3, length)); length = length - 3; } stringContainer.add(text.substring(0, length)); // 將最前面的小於三個數字的也加入到陣列去 StringBuffer buffer = new StringBuffer(); for (int i = stringContainer.size() - 1; i >= 0; i--) { buffer.append(stringContainer.get(i) + ","); } buffer.deleteCharAt(buffer.length() - 1); return buffer.toString(); } } public static void main(String[] args) throws ParseException { System.out.println(FormatNumber.addThousandSeparator(".331234567")); System.out.println("length:" + "1324678881122.331234567".length()); System.out.println("index:" + "1324678881122.331234567".indexOf(".")); System.out.println(FormatNumber.addThousandSeparator("1324678881122.331234567")); /** * 結果如下: length:23 index:13 1,324,678,881,122.331234567 */ System.out.println("length:" + "1324678881122.331234567".length()); System.out.println("index:" + "1324678881122.331234567".indexOf(".")); System.out.println(FormatNumber.addThousandSeparator("1324678881122")); System.out.println(FormatNumber.addThousandSeparator("324678881122")); System.out.println(FormatNumber.addThousandSeparator("22")); System.out.println(FormatNumber.addThousandSeparator("")); System.out.println(FormatNumber.addThousandSeparator(" ")); System.out.println(FormatNumber.addThousandSeparator(".331234567")); System.out.println(FormatNumber.addThousandSeparator("0.331234567")); System.out.println(FormatNumber.addThousandSeparator(null)); } }