走走看看

          適合不適合,也要看看的

          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 閱讀(167) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

          新站開了! 歡迎光臨!

          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          Links

          搜索

          積分與排名

          最新評(píng)論

          主站蜘蛛池模板: 平度市| 新源县| 桓台县| 桦南县| 周宁县| 阆中市| 邯郸市| 泰来县| 霸州市| 连州市| 台东县| 南宁市| 布尔津县| 织金县| 资源县| 云南省| 福泉市| 罗城| 霍城县| 璧山县| 浦北县| 上林县| 南平市| 拜城县| 龙山县| 黑河市| 云浮市| 拜泉县| 云龙县| 青州市| 岑巩县| 中江县| 酉阳| 莱州市| 梓潼县| 麻江县| 哈密市| 乌海市| 福清市| 蕉岭县| 吉隆县|