走走看看

          適合不適合,也要看看的

          code

          ??1?package?test.format;
          ??2?import?java.text.NumberFormat;
          ??3?import?java.util.HashMap;
          ??4?public?class?SimpleMoneyFormat?{
          ??5???public?static?final?String?EMPTY?=?"";
          ??6???public?static?final?String?ZERO?=?"";
          ??7???public?static?final?String?ONE?=?"";
          ??8???public?static?final?String?TWO?=?"";
          ??9???public?static?final?String?THREE?=?"";
          ?10???public?static?final?String?FOUR?=?"";
          ?11???public?static?final?String?FIVE?=?"";
          ?12???public?static?final?String?SIX?=?"";
          ?13???public?static?final?String?SEVEN?=?"";
          ?14???public?static?final?String?EIGHT?=?"";
          ?15???public?static?final?String?NINE?=?"";
          ?16???public?static?final?String?TEN?=?"";
          ?17???public?static?final?String?HUNDRED?=?"";
          ?18???public?static?final?String?THOUSAND?=?"";
          ?19???public?static?final?String?TEN_THOUSAND?=?"";
          ?20???public?static?final?String?HUNDRED_MILLION?=?"";
          ?21???public?static?final?String?YUAN?=?"";
          ?22???public?static?final?String?JIAO?=?"";
          ?23???public?static?final?String?FEN?=?"";
          ?24???public?static?final?String?DOT?=?".";
          ?25?
          ?26???private?static?SimpleMoneyFormat?formatter?=?null;
          ?27???private?HashMap?chineseNumberMap?=?new?HashMap();
          ?28???private?HashMap?chineseMoneyPattern?=?new?HashMap();
          ?29???private?NumberFormat?numberFormat?=?NumberFormat.getInstance?();
          ?30?
          ?31???private?SimpleMoneyFormat()?{
          ?32?????numberFormat.setMaximumFractionDigits(4);
          ?33?????numberFormat.setMinimumFractionDigits(2);
          ?34?????numberFormat.setGroupingUsed(false);
          ?35?
          ?36?????chineseNumberMap.put("0",?ZERO);
          ?37?????chineseNumberMap.put("1",?ONE);
          ?38?????chineseNumberMap.put("2",?TWO);
          ?39?????chineseNumberMap.put("3",?THREE);
          ?40?????chineseNumberMap.put("4",?FOUR);
          ?41?????chineseNumberMap.put("5",?FIVE);
          ?42?????chineseNumberMap.put("6",?SIX);
          ?43?????chineseNumberMap.put("7",?SEVEN);
          ?44?????chineseNumberMap.put("8",?EIGHT);
          ?45?????chineseNumberMap.put("9",?NINE);
          ?46?????chineseNumberMap.put(DOT,?DOT);
          ?47?
          ?48?????chineseMoneyPattern.put("1",?TEN);
          ?49?????chineseMoneyPattern.put("2",?HUNDRED);
          ?50?????chineseMoneyPattern.put("3",?THOUSAND);
          ?51?????chineseMoneyPattern.put("4",?TEN_THOUSAND);
          ?52?????chineseMoneyPattern.put("5",?TEN);
          ?53?????chineseMoneyPattern.put("6",?HUNDRED);
          ?54?????chineseMoneyPattern.put("7",?THOUSAND);
          ?55?????chineseMoneyPattern.put("8",?HUNDRED_MILLION);
          ?56???}
          ?57?
          ?58???public?static?SimpleMoneyFormat?getInstance()?{
          ?59?????if?(formatter?==?null)
          ?60???????formatter?=?new?SimpleMoneyFormat();
          ?61?????return?formatter;
          ?62???}
          ?63?
          ?64???public?String?format(String?moneyStr)?{
          ?65?????checkPrecision(moneyStr);
          ?66?????String?result;
          ?67?????result?=?convertToChineseNumber(moneyStr);
          ?68?????result?=?addUnitsToChineseMoneyString(result);
          ?69?????return?result;
          ?70???}
          ?71?
          ?72???public?String?format(double?moneyDouble)?{
          ?73?????return?format(numberFormat.format(moneyDouble));
          ?74???}
          ?75?
          ?76???public?String?format(int?moneyInt)?{
          ?77?????return?format(numberFormat.format(moneyInt));
          ?78???}
          ?79?
          ?80???public?String?format(long?moneyLong)?{
          ?81?????return?format(numberFormat.format(moneyLong));
          ?82???}
          ?83?
          ?84???public?String?format(Number?moneyNum)?{
          ?85?????return?format(numberFormat.format(moneyNum));
          ?86???}
          ?87?
          ?88???private?String?convertToChineseNumber(String?moneyStr)?{
          ?89?????String?result;
          ?90?????StringBuffer?cMoneyStringBuffer?=?new?StringBuffer();
          ?91?????for?(int?i?=?0;?i?<?moneyStr.length();?i++)?{
          ?92???????cMoneyStringBuffer.append?(chineseNumberMap.get(moneyStr.substring(i,?i?+?1)));
          ?93?????}
          ?94?????//拾佰仟萬億等都是漢字里面才有的單位,加上它們
          ?95?????int?indexOfDot?=?cMoneyStringBuffer.indexOf(DOT);
          ?96?????int?moneyPatternCursor?=?1;
          ?97?????for?(int?i?=?indexOfDot?-?1;?i?>?0;?i--)?{
          ?98???????cMoneyStringBuffer.insert(i,?chineseMoneyPattern.get(EMPTY?+?moneyPatternCursor));
          ?99???????moneyPatternCursor?=?moneyPatternCursor?==?8???1?:?moneyPatternCursor?+?1;
          100?????}
          101?
          102?????String?fractionPart?=?cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."));
          103?????cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."),?cMoneyStringBuffer.length());
          104?????while?(?cMoneyStringBuffer.indexOf("零拾")?!=?-1)?{
          105???????cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"),?cMoneyStringBuffer.indexOf("零拾")?+?2,?ZERO);
          106?????}
          107?????while?(cMoneyStringBuffer.indexOf?("零佰")?!=?-1)?{
          108???????cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"),?cMoneyStringBuffer.indexOf("零佰")?+?2,?ZERO);
          109?????}
          110?????while?(cMoneyStringBuffer.indexOf("零仟")?!=?-1)?{
          111???????cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"),?cMoneyStringBuffer.indexOf("零仟")?+?2,?ZERO);
          112?????}
          113?????while?(cMoneyStringBuffer.indexOf("零萬")?!=?-1)?{
          114???????cMoneyStringBuffer.replace?(cMoneyStringBuffer.indexOf("零萬"),?cMoneyStringBuffer.indexOf("零萬")?+?2,?TEN_THOUSAND);
          115?????}
          116?????while?(cMoneyStringBuffer.indexOf("零億")?!=?-1)?{
          117???????cMoneyStringBuffer.replace(?cMoneyStringBuffer.indexOf?("零億"),?cMoneyStringBuffer.indexOf("零億")?+?2,?HUNDRED_MILLION);
          118?????}
          119?????while?(cMoneyStringBuffer.indexOf("零零")?!=?-1)?{
          120???????cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf?("零零"),?cMoneyStringBuffer.indexOf("零零")?+?2,?ZERO);
          121?????}
          122?????if?(cMoneyStringBuffer.lastIndexOf(ZERO)?==?cMoneyStringBuffer.length()?-?1)
          123???????cMoneyStringBuffer.delete(cMoneyStringBuffer.length?()?-?1,?cMoneyStringBuffer.length());
          124?????cMoneyStringBuffer.append(fractionPart);
          125?
          126?????result?=?cMoneyStringBuffer.toString();
          127?????return?result;
          128???}
          129?
          130?
          131???private?String?addUnitsToChineseMoneyString(String?moneyStr)?{
          132?????String?result;
          133?????StringBuffer?cMoneyStringBuffer?=?new?StringBuffer(moneyStr);
          134?????int?indexOfDot?=?cMoneyStringBuffer.indexOf(DOT);
          135?????cMoneyStringBuffer.replace(indexOfDot,?indexOfDot?+?1,?YUAN);

          posted on 2006-07-23 23:28 Yixuan Huang 閱讀(168) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          公告

          新站開了! 歡迎光臨!

          導航

          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          Links

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 黎平县| 宾阳县| 开江县| 信宜市| 措美县| 文化| 嘉鱼县| 姜堰市| 云南省| 砀山县| 梁河县| 邯郸市| 抚顺市| 香格里拉县| 清流县| 株洲市| 驻马店市| 法库县| 吕梁市| 孟连| 灵武市| 越西县| 高州市| 望奎县| 祁连县| 宾川县| 灌南县| 同德县| 成武县| 中超| 宜阳县| 巴林右旗| 昆明市| 梨树县| 鱼台县| 拜城县| 逊克县| 双牌县| 紫金县| 牟定县| 那曲县|