UDN-企业互联网技术人气社区

板块导航

浏览  : 10628
回复  : 50

汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九,求转换

[复制链接]
dajbd的头像 楼主
发表于 2013-2-18 22:06:25 | 显示全部楼层 |阅读模式
汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九,求转换


有什么好的方法吗?
dajbd的头像 楼主
发表于 2013-2-18 22:06:59 | 显示全部楼层
最终应该转为这样:13410236609,有什么好方法吗?
        
使用道具 举报

回复

发表于 2013-2-18 22:39:27 | 显示全部楼层
先倒叙,然后由左到右按照 十 百 千 万 亿 作为关键字截取,截取得到的字符串内部再截取计算一次,实际上就是一个递归
        
使用道具 举报

回复

发表于 2013-2-18 22:59:53 | 显示全部楼层
不用这么麻烦吧,先定义对应关系
零对应0
一对应1
二对应2,如此类推
从左到右一个一个汉字扫描,遇到什么中文,就把什么数字写入字符串,到最后的话,如果以十结尾,则在结尾加1个0,百结尾加2个,如此类推即可
        
使用道具 举报

回复

dajbd的头像 楼主
发表于 2013-2-18 23:14:40 | 显示全部楼层
引用 3 楼 a6675626purs 的回复:不用这么麻烦吧,先定义对应关系
零对应0
一对应1
二对应2,如此类推
从左到右一个一个汉字扫描,遇到什么中文,就把什么数字写入字符串,到最后的话,如果以十结尾,则在结尾加1个0,百结尾加2个,如此类推即可

你这样的话,1002,汉字是一千零二,你转换出来就是102,要不你写个算法出来
        
使用道具 举报

回复

发表于 2013-2-18 23:25:28 | 显示全部楼层
public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                String number = "一百三十四亿一千零二十三万六千六百零九";
               
               
                char[] num = new char[number.length()];
               
                StringBuffer sb =new StringBuffer();
               
                //截取字符串
                for(int i =0;i
使用道具 举报

回复

dajbd的头像 楼主
发表于 2013-2-18 23:43:58 | 显示全部楼层
引用 5 楼 MsSnow 的回复:public class Test {

/**
* @param args
*/
public static void main(String[] args) {
String number = "一百三十四亿一千零二十三万六千六百零九";


char[] num = new char[number.length()];

StringBuf……


大哥,不对,执行结果为:134123669

        
使用道具 举报

回复

dajbd的头像 楼主
发表于 2013-2-18 23:44:25 | 显示全部楼层
package number_converter;

//汉字转换为阿拉伯数字
//一百三十四亿一千零二十三万六千六百零九
//最终应该转为这样:13410236609

public class MyConverter2 {
        public static void main(String[] args) {
                long d=convert("一百三十四亿一千零二十三万六千六百零九");
                System.out.println(d);
        }
       
        public static long convert(String s){
                String [] s1=s.split("亿");
                long num=restore(s1[0])  *100000000L;
               
               
                String [] s2=s1[1].split("万");
                num=restore(s2[0])  *10000L +num;
               
                num=num+restore(s2[1]);
               
                return num;
        }
       

        public static int  convertNumber(char c){
                int num=0;
                switch(c){
                case '零': num= 0;  break;
                case '一': num= 1;  break;
                case '二': num= 2;  break;
                case '三': num= 3;  break;
                case '四': num= 4;  break;
                case '五': num= 5;  break;
                case '六': num= 6;  break;
                case '七': num= 7;  break;
                case '八': num= 8;  break;
                case '九': num= 9;  break;
                }
                return num;
        }
       
        //  比如  一千三百五十1  还原为1351
        public static int restore(String s){
                char [] array=s.toCharArray();
                int num=0;
               
                for (int i=0;  i
        
使用道具 举报

回复

发表于 2013-2-19 09:20:12 | 显示全部楼层

import java.util.regex.Pattern;

public class MoneyTest {

        public static long parse(String money) {
                long result = 0;
                char c = 0;

                boolean flag = Pattern.matches("^.*亿.*万.*$", money);

                for (int i = 0; i
        
使用道具 举报

回复

发表于 2013-2-19 13:38:01 | 显示全部楼层
引用 6 楼 dajbd 的回复:引用 5 楼 MsSnow 的回复:public class Test {

/**
* @param args
*/
public static void main(String[] args) {
String number = "一百三十四亿一千零二十三万六千六百零九";


char[] num = new char[number.lengt……



这还有问题的哟!!
看看这个long d = convert("一十七万一百三十四亿一千零二十三万六千六百零九");
        System.out.println(d);
        long l = convert("一十七万亿一百三十四亿一千零二十三万六千六百零九");
        System.out.println(l);
输出14410236609
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at com.test.ConverterNumber.convert(ConverterNumber.java:30)
        at com.test.ConverterNumber.main(ConverterNumber.java:19)

        
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部