Blame view

src/main/java/com/rnt/utils/CnUpperCaser.java 3.47 KB
e80df919   atao   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  package com.rnt.utils;
  
  /**
   * Copyright: Copyright (c) 2017  zteits
   *
   * @ClassName: com.rnt.utils
   * @Description:
   * @version: v1.0.0
   * @author: atao
   * @date: 2017/6/9   上午10:24
   * Modification History:
   * Date         Author          Version      Description
   * ---------------------------------------------------------*
   * 2017/6/9      atao          v1.0.0          创建
   */
  public class CnUpperCaser {
      // 整数部分
      private String integerPart;
      // 小数部分
      private String floatPart;
  
      // 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
      private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
  
      // 供分级转化的数组,因为各个实例都要使用所以设为静态
      private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};
  
      /**
       * 构造函数,通过它将阿拉伯数字形式的字符串传入
       * @param original
       */
      public CnUpperCaser(String original){
          // 成员变量初始化
          integerPart="";
          floatPart="";
  
          if(original.contains(".")){
              // 如果包含小数点
              int dotIndex=original.indexOf(".");
              integerPart=original.substring(0,dotIndex);
              floatPart=original.substring(dotIndex+1);
          }
          else{
              // 不包含小数点
              integerPart=original;
          }
      }
  
      /**
       * 取得大写形式的字符串
       * @return
       */
      public String getCnString(){
          // 因为是累加所以用StringBuffer
          StringBuffer sb=new StringBuffer();
  
          // 整数部分处理
          for(int i=0;i<integerPart.length();i++){
              int number=getNumber(integerPart.charAt(i));
  
              sb.append(cnNumbers[number]);
              sb.append(series[integerPart.length()-1-i]);
          }
  
          // 小数部分处理
          if(floatPart.length()>0){
              sb.append("点");
              for(int i=0;i<floatPart.length();i++){
                  int number=getNumber(floatPart.charAt(i));
  
                  sb.append(cnNumbers[number]);
              }
          }
  
          // 返回拼接好的字符串
          return sb.toString();
      }
  
      /**
       * 将字符形式的数字转化为整形数字
       * 因为所有实例都要用到所以用静态修饰
       * @param c
       * @return
       */
      private static int getNumber(char c){
          String str=String.valueOf(c);
          return Integer.parseInt(str);
      }
  
      /**
       * @param args
       */
      public static void main(String[] args) {
          System.out.println(new CnUpperCaser("123456789.12345").getCnString());
          System.out.println(new CnUpperCaser("123456789").getCnString());
          System.out.println(new CnUpperCaser(".123456789").getCnString());
          System.out.println(new CnUpperCaser("0.1234").getCnString());
          System.out.println(new CnUpperCaser("1").getCnString());
          System.out.println(new CnUpperCaser("12").getCnString());
          System.out.println(new CnUpperCaser("123").getCnString());
          System.out.println(new CnUpperCaser("1234").getCnString());
          System.out.println(new CnUpperCaser("12345").getCnString());
          System.out.println(new CnUpperCaser("123456").getCnString());
          System.out.println(new CnUpperCaser("1234567").getCnString());
          System.out.println(new CnUpperCaser("12345678").getCnString());
          System.out.println(new CnUpperCaser("123456789").getCnString());
      }
  }