隨筆 - 25  文章 - 32  trackbacks - 0
          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          package org.phyeas.demo.number;

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

          public class NumberToRMB {
              
          private static String[] UNIT = { """""" };
              
          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是特殊的。所以單獨一個方法添加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 閱讀(384) 評論(3)  編輯  收藏

          FeedBack:
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫形式的程序?qū)崿F(xiàn) 2009-01-21 01:46 人民幣匯率
          轉(zhuǎn)換1580654  回復(fù)  更多評論
            
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫形式的程序?qū)崿F(xiàn) 2009-01-31 09:05 phyeas
          @人民幣匯率
          ?  回復(fù)  更多評論
            
          # re: 將數(shù)字形式轉(zhuǎn)換為人民幣大寫形式的程序?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{分,角,元,拾,百,千,萬,億}

          這個如何  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 南和县| 邵东县| 崇明县| 达尔| 库尔勒市| 兴山县| 广昌县| 墨玉县| 江永县| 惠水县| 乌拉特中旗| 呼玛县| 山阳县| 广宗县| 永丰县| 鲁山县| 额敏县| 贡山| 鹿泉市| 黄骅市| 辛集市| 温泉县| 共和县| 汉中市| 达孜县| 沛县| 武川县| 荔浦县| 新乡县| 河东区| 清涧县| 黄山市| 清原| 奉贤区| 梓潼县| 屏东市| 南充市| 绵阳市| 广宗县| 禄劝| 图们市|