zoukankan      html  css  js  c++  java
  • 将中文数字转为数字

      1     /**
      2       * 根据输入的中文转为数字
      3       * @param String chineseNumber
      4       * @return int
      5       */
      6      public static int chineseNumber2Int(String chineseNumber){
      7          String state=chineseNumber;
      8          int result=0;
      9          
     10          if(state=="" || state==null){
     11             try {
     12                 throw new Exception("输入不合法!");
     13             } catch (Exception e) {
     14                 // TODO Auto-generated catch block
     15                 e.printStackTrace();
     16             }
     17          }
     18          else if(state.contains("千")||state.contains("百") || state.contains("十")){
     19             int temp = 1;//存放一个单位的数字如:十万
     20             int flag = 0;//判断是否有中文数字的单位
     21             char[] cnArr = new char[]{'一','二','三','四','五','六','七','八','九'};
     22              char[] chArr = new char[]{'十','百','千','万','亿'};
     23             //遍历输入的中文
     24             for (int i = 0; i < state.length(); i++) {
     25                 boolean isCHUnit = true;//判断是否是chArr
     26                 char c = state.charAt(i);//字符
     27                 //判断是否数字
     28                 for (int j = 0; j < cnArr.length; j++) {//非单位,即数字
     29                     if (c == cnArr[j]) {
     30                         if(0 != flag){
     31                             //添加下一个单位之前,先把上一个单位值添加到结果中
     32                             result += temp;
     33                             //临时值重置
     34                             temp = 1;
     35                             flag = 0;
     36                         }
     37                         // 下标+1,就是对应的值
     38                         temp = j + 1;
     39                         isCHUnit = false;
     40                         break;
     41                     }
     42                 }
     43                 //判断是否单位
     44                 if(isCHUnit){//单位{'十','百','千','万','亿'}
     45                     for (int j = 0; j < chArr.length; j++) {
     46                         if (c == chArr[j]) {
     47                             switch (j) {
     48                             case 0:
     49                                 temp *= 10;
     50                                 break;
     51                             case 1:
     52                                 temp *= 100;
     53                                 break;
     54                             case 2:
     55                                 temp *= 1000;
     56                                 break;
     57                             case 3:
     58                                 temp *= 10000;
     59                                 break;
     60                             case 4:
     61                                 temp *= 100000000;
     62                                 break;
     63                             default:
     64                                 break;
     65                             }
     66                             flag++;
     67                         }
     68                     }
     69                 }
     70                 if (i == state.length() - 1) {//遍历到最后一个字符
     71                     result += temp;
     72                 }
     73             }
     74             }
     75          else{
     76              int temp=1;
     77              String tempS="";
     78              char[] cnArr = new char[]{'一','二','三','四','五','六','七','八','九'};
     79              for (int i = 0; i < state.length(); i++) {
     80                     char c = state.charAt(i);//字符
     81                     if(c=='零'){
     82                         temp=0;
     83                     }
     84                     else{
     85                         for (int j = 0; j < cnArr.length; j++) {//非单位,即数字
     86                             if (c == cnArr[j]) {
     87                                 temp = j + 1;
     88                                 break;
     89                             }
     90                         }    
     91                     }
     92                     
     93                     tempS+=temp;
     94                 }
     95              
     96              result=Integer.parseInt(tempS);
     97          }
     98          System.out.println(result);
     99             return result;
    100         }
  • 相关阅读:
    KMP算法
    数据库建立索引为什么会加快查询速度
    腾讯2014实习生4月20日笔试题(分析与解答)
    智能指针auto_ptr & shared_ptr
    用C++实现一个不能被继承的类
    2014金山笔试_编写一个数组类 MyVector
    TCP分组交换详解
    子网掩码的计算
    服务器端 安装svn
    yii2之ActiveForm表单使用
  • 原文地址:https://www.cnblogs.com/Lxiaojiang/p/6593400.html
Copyright © 2011-2022 走看看