频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
中文数字转换成阿拉伯数字
2011-03-19 16:51:52      个评论      
收藏   我要投稿

package cn.edu.bjfu.test;

public class Divert {

    /**
     * 只支持千万亿级别,绝对能够满足日常需求
     *
     * @param src
     * @return
     */
    public static double pert(String src) {
        String temp = src.replaceAll("整", "").split("圆",2)[0];
        int index1 = src.indexOf("角");
        int index2 = src.indexOf("分");
        String[] srcs1 = temp.split("亿");
        long ret = 0;
        if(srcs1.length == 1) {
            if(temp.contains("亿")) {
                ret =  fromDBK2Long(temp) * 100000000;
            } else {
                ret = fromDBK2Long(temp);
            }
        } else if(srcs1.length == 2) {
            ret = fromDBK2Long(srcs1[0]) * 100000000 + fromDBK2Long(srcs1[1]);
        }

       
        StringBuilder sb = new StringBuilder();
        sb.append(ret);
        if (index1 > -1)
            sb.append(".")
                    .append(Divert.getInt(String
                            .valueOf(src.charAt(index1 - 1))));
        if (index2 > -1) {
            if (index1 > -1)
                sb.append(Divert.getInt(String
                        .valueOf(src.charAt(index2 - 1))));
            else
                sb.append(".")
                        .append(0)
                        .append(Divert.getInt(String
                                .valueOf(src.charAt(index2 - 1))));
        }

        return Double.parseDouble(sb.toString());
    }

    private static long fromDBK2Long(String src) {
        String[] srcs = src.split("万",2);
        long ret = 0;
       
        if(srcs.length == 1) {
            if(src.contains("万")) {
                String[] temp = srcs[0].split("零");
                for(String tmp : temp)
                ret += Divert.doSomething(tmp);
               
                ret *= 10000;
            } else {
                String[] temp = srcs[0].split("零");
                for(String tmp : temp)
                ret += Divert.doSomething(tmp);
            }
        } else if(srcs.length == 2) {
            String[] temp1 = srcs[0].split("零");
            String[] temp2 = srcs[1].split("零");
            for(String tmp : temp1)
            ret += Divert.doSomething(tmp);
           
            ret *= 10000;
           
            for(String tmp : temp2)
            ret += Divert.doSomething(tmp);

        } else {
           
        }
       
        return ret;
    }

    private static long doSomething(String src) {
        if (src.length() == 1)
            return Divert.getInt(src);
        else if (src.length() == 2) {
            return Divert.getInt(String.valueOf(src
                    .charAt(0)))
                    * Divert.getInt(String.valueOf(src
                            .charAt(1)));
        } else if (src.length() > 2) {
            if (Divert.getInt(String.valueOf(src
                    .charAt(2))) < 10000) {

                return Divert
                .doSomething(src.substring(
                      

点击复制链接 与好友分享!回本站首页
上一篇:BoneCP学习笔记——配置参数
下一篇:核心Swing组件(五)
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站