隨筆 - 25  文章 - 32  trackbacks - 0
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          package org.phyeas.demo.number;

          import java.util.regex.Matcher;
          import java.util.regex.Pattern;

          public class NumberToRMB {
              
          private static String[] UNIT = { """萬(wàn)""" };
              
          private static String[] UNIT2 = { """""" };

              
          private static final String ZERO = "";

              
          private static String[] NUM = { """""""""""""""",
                      
          """" };

              
          /**
               * 轉(zhuǎn)換一串字符
               * 
               * 
          @param str
               * 
          @return
               
          */
              
          public static String parseCharsToRMB(String str) {
                  
          if (!isNumber(str)) {
                      
          throw new IllegalArgumentException("參數(shù)不正確,必須為數(shù)字");
                  }
                  StringBuffer buffer 
          = new StringBuffer();
                  
          int count = 0;
                  
          for (int i = str.length(); i > 0; i -= 4, count++) {
                      String char4 
          = null;
                      
          if (i - 4 < 0) {
                          System.out.println(
          "start=" + 0 + ".end=" + i);
                          char4 
          = str.substring(0, i);
                          buffer.insert(
          0, parse4CharsToRMB(char4) + UNIT[count]);
                          
          break;
                      }
                      System.out.println(
          "start=" + (i - 4+ ".end=" + i);
                      char4 
          = str.substring(i - 4, i);
                      buffer.insert(
          0, parse4CharsToRMB(char4) + UNIT[count]);

                  }
                  
          return buffer.toString();
              }

              
          /**
               * 轉(zhuǎn)換4位字符
               * 
               * 
          @param str
               * 
          @return
               
          */
              
          public static String parse4CharsToRMB(String str) {
                  
          if (str.length() > 4 || !isNumber(str)) {
                      
          throw new IllegalArgumentException("參數(shù)不正確,str應(yīng)該為不大于4位的字符");
                  }
                  StringBuffer result 
          = new StringBuffer();
                  
          int startUNIT = getStartUNIT(str.length());

                  
          for (int i = 0; i < str.length(); i++) {
                      
          if (str.charAt(i) == '0') {
                          
          if (i == 0) {
                              result.append(ZERO);
                          } 
          else {
                              appendZero(result, i);
                          }
                          startUNIT
          ++;
                      } 
          else {
                          
          int index = Integer.parseInt(String.valueOf(str.charAt(i))) - 1;
                          result.append(NUM[index]);
                          
          if (startUNIT < UNIT2.length) {
                              result.append(UNIT2[startUNIT]);
                              startUNIT
          ++;
                          }
                      }
                  }
                  
          return result.toString();
              }

              
          /**
               * 獲取起始位置
               * 
               * 
          @param strLength
               * 
          @return
               
          */
              
          public static int getStartUNIT(int strLength) {
                  
          switch (strLength) {
                  
          case 4:
                      
          return 0;
                  
          case 3:
                      
          return 1;
                  
          case 2:
                      
          return 2;
                  
          case 1:
                      
          return 3;
                  
          default:
                      
          return 0;
                  }
              }

              
          /**
               * 0是特殊的。所以單獨(dú)一個(gè)方法添加0
               * 
               * 
          @param buffer
               * 
          @param index
               * 
          @return
               
          */
              
          private static StringBuffer appendZero(StringBuffer buffer, int index) {
                  System.out.println(
          "buffer=" + buffer);
                  String before 
          = buffer.substring(index, index + 1);
                  System.out.println(
          "before=" + before);
                  
          if (before.equals(ZERO)) {
                      
          return buffer;
                  } 
          else {
                      buffer.append(ZERO);
                  }
                  
          return buffer;
              }

              
          /**
               * 判斷是否為數(shù)字字符串
               * 
               * 
          @param str
               * 
          @return
               
          */
              
          public static boolean isNumber(String str) {
                  
          if (str != null && str.length() > 0) {
                      Pattern pattern 
          = Pattern.compile("[0-9]*");
                      Matcher m 
          = pattern.matcher(str);
                      
          if (m.find()) {
                          
          return true;
                      }
                      
          return false;
                  }
                  
          return false;
              }

              
          public static void main(String[] args) {
                  System.out.println(
          "轉(zhuǎn)換1580654=" + parseCharsToRMB("1580654"));
              }
          }
          posted on 2008-06-30 20:38 phyeas 閱讀(386) 評(píng)論(3)  編輯  收藏

          FeedBack:
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫(xiě)形式的程序?qū)崿F(xiàn) 2009-01-21 01:46 人民幣匯率
          轉(zhuǎn)換1580654  回復(fù)  更多評(píng)論
            
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫(xiě)形式的程序?qū)崿F(xiàn) 2009-01-31 09:05 phyeas
          @人民幣匯率
          ?  回復(fù)  更多評(píng)論
            
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫(xiě)形式的程序?qū)崿F(xiàn) 2010-09-20 16:08 cxx
          private string GetString(double num)
          {
          double intit=num;
          long zhengshu=Convert.ToInt64(num*100);
          string str=zhengshu.ToString();
          char[] arrCha=str.ToCharArray();
          StringBuilder strb=new StringBuilder();
          int jj=0;
          for(int i=0;i<arrCha.Length;i++)
          {
          jj=i;
          if(jj>=7&&jj<=9)
          {
          jj-=4;
          }
          else if(jj==10)
          {
          jj-=3;
          }
          else if(jj>=11)
          {
          jj-=7;
          }

          strb.Insert(0,((Chan)(Convert.ToInt32((arrCha[arrCha.Length-1-i]).ToString()))).ToString()+((ChanWei)jj).ToString());
          }
          return strb.ToString();
          }
          private enum Chan{零,壹,貳,叁,肆,伍,陸,柒,捌,玖}
          private enum ChanWei{分,角,元,拾,百,千,萬(wàn),億}

          這個(gè)如何  回復(fù)  更多評(píng)論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 彭山县| 平利县| 酒泉市| 麻城市| 四会市| 灵台县| 兴文县| 乳源| 永胜县| 土默特左旗| 昌宁县| 阜宁县| 砀山县| 深水埗区| 江北区| 马公市| 依安县| 临邑县| 松滋市| 周口市| 横峰县| 金湖县| 营口市| 花莲县| 泾源县| 陕西省| 兴安盟| 民和| 县级市| 潜江市| 尤溪县| 井陉县| 都江堰市| 禹州市| 崇礼县| 龙川县| 集贤县| 建宁县| 东明县| 石林| 杭锦旗|