• 转换中文数字成为阿拉伯数字


    package converter;
    
    import java.util.HashMap;
    
    //转换中文数字成为阿拉伯数字
    public class chineseConverter {
        
        //万以下的单位
        static HashMap<Character, Integer> m_mapUnit = new HashMap<Character, Integer>(); 
    
        //万以上的单位
        static HashMap<Character, Integer> m_wUnit = new HashMap<Character, Integer>(); 
    
        //数字
        static HashMap<Character, Integer> m_mapNum = new HashMap<Character, Integer>(); 
        
        static{
            //万以下的单位
            m_mapUnit.put(Character.valueOf('十'), Integer.valueOf(1));
            m_mapUnit.put(Character.valueOf('拾'), Integer.valueOf(1));
            m_mapUnit.put(Character.valueOf('百'), Integer.valueOf(2));
            m_mapUnit.put(Character.valueOf('佰'), Integer.valueOf(2));
            m_mapUnit.put(Character.valueOf('千'), Integer.valueOf(3));
            m_mapUnit.put(Character.valueOf('仟'), Integer.valueOf(3));
    
            //万以上的单位
            m_wUnit.put(Character.valueOf('万'), Integer.valueOf(4));
            m_wUnit.put(Character.valueOf('亿'), Integer.valueOf(8));
            m_wUnit.put(Character.valueOf('兆'), Integer.valueOf(16));
    
            //数字
            m_mapNum.put(Character.valueOf('零'), Integer.valueOf(0));
            m_mapNum.put(Character.valueOf('○'), Integer.valueOf(0));
            m_mapNum.put(Character.valueOf('〇'), Integer.valueOf(0));
            m_mapNum.put(Character.valueOf('一'), Integer.valueOf(1));
            m_mapNum.put(Character.valueOf('二'), Integer.valueOf(2));
            m_mapNum.put(Character.valueOf('三'), Integer.valueOf(3));
            m_mapNum.put(Character.valueOf('四'), Integer.valueOf(4));
            m_mapNum.put(Character.valueOf('五'), Integer.valueOf(5));
            m_mapNum.put(Character.valueOf('六'), Integer.valueOf(6));
            m_mapNum.put(Character.valueOf('七'), Integer.valueOf(7));
            m_mapNum.put(Character.valueOf('八'), Integer.valueOf(8));
            m_mapNum.put(Character.valueOf('九'), Integer.valueOf(9));
            m_mapNum.put(Character.valueOf('壹'), Integer.valueOf(1));
            m_mapNum.put(Character.valueOf('贰'), Integer.valueOf(2));
            m_mapNum.put(Character.valueOf('叁'), Integer.valueOf(3));
            m_mapNum.put(Character.valueOf('肆'), Integer.valueOf(4));
            m_mapNum.put(Character.valueOf('伍'), Integer.valueOf(5));
            m_mapNum.put(Character.valueOf('陆'), Integer.valueOf(6));
            m_mapNum.put(Character.valueOf('柒'), Integer.valueOf(7));
            m_mapNum.put(Character.valueOf('捌'), Integer.valueOf(8));
            m_mapNum.put(Character.valueOf('玖'), Integer.valueOf(9));
        }
        
        static int end = 0; //下次开始接收的位置
    
        //接收一个万以下的小数字
        public static int getFigure(String input ,int offset){
            int figure = 0;
            char c = input.charAt(offset);
            Integer ret = m_mapNum.get(c);
            if(ret == null){
                return 0;
            }
            figure = ret;
            
            offset++;
            if(offset>=input.length()){
                end = offset;
                return figure;
            }
            c = input.charAt(offset);
            int unitLevel = 0;
            ret = m_mapUnit.get(c);
            
            if(ret!=null){
                offset++;
                unitLevel = ret;
            }
            
            figure *= Math.pow(10.0D, unitLevel);
            end = offset;
            return figure;
        }
        
        public static void main(String[] args){
            int figure = 0;
            String input = "九百一十四";
            for(int i=0;i<input.length();i = end){
                int unitNum = getFigure(input,i);
                //TODO 如果不是小数字,再判断是否万级单位
                figure += unitNum;
                //System.out.println(end + " "+ figure + " " +  unitNum);
            }
            
            System.out.println(figure);
        }
        
    
    }
  • 相关阅读:
    【Gerrit】重磅! 2.x 版本升级到 3.x 版本
    【Linux】参数传递之xargs
    Sqlserver账号对应数据库
    限流:计数器、漏桶、令牌桶 三大算法的原理与实战(史上最全)
    C# 运行在ubuntu, linux系统,在linux系统使用HslCommunication组件,.net core发布到ubuntu系统
    使用nmap命令监控远程服务器指定端口状态
    MySQL使用脚本进行整库数据备份【表(结构+数据)、视图、函数、事件】
    MySQL自定义函数与存储过程的创建、使用、删除
    vue响应式的原理
    浏览器渲染机制
  • 原文地址:https://www.cnblogs.com/i80386/p/2705104.html
Copyright © 2020-2023  润新知