OC 将汉语数字转换成阿拉伯数字

如果给一个-99999……99999的汉语数字,如何将其转换成我们熟悉的阿拉伯数字?比如“一千一百一十一”怎么变成我们常见的1111,再比如“负九千零九”怎么变成-9009?下面我写的一个方法,就可以简单的实现这个功能

- (NSString *)arabicNumberalsFromChineseNumberals:(NSString *)arabic{

    NSMutableDictionary * mdic =[[NSMutableDictionary alloc]init];

    

    [mdic setObject:[NSNumber numberWithInt:10000] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:1000] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:100] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:10] forKey:@""];

    

    [mdic setObject:[NSNumber numberWithInt:9] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:8] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:7] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:6] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:5] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:4] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:3] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:2] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:2] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:1] forKey:@""];

    [mdic setObject:[NSNumber numberWithInt:0] forKey:@""];

    

//    NSLog(@"%@",mdic);


    BOOL flag=YES;//yes表示正数,no表示负数

    NSString * s=[arabic substringWithRange:NSMakeRange(0, 1)];

    if([s isEqualToString:@""]){

        flag=NO;

    }

    int i=0;

    if(!flag){

        i=1;

    }

    int sum=0;//

    int num[20];//保存单个汉字信息数组

    for(int i=0;i<20;i++){//将其全部赋值为0

        num[i]=0;

    }

    int k=0;//用来记录数据的个数

    

    //如果是负数,正常的数据从第二个汉字开始,否则从第一个开始

    for(;i<[arabic length];i++){

        NSString * key=[arabic substringWithRange:NSMakeRange(i, 1)];

        int tmp=[[mdic valueForKey:key] intValue];

        num[k++]=tmp;

    }

    //将获得的所有数据进行拼装

    for(int i=0;i<k;i++){

        if(num[i]<10&&num[i+1]>=10){

            sum+=num[i]*num[i+1];

            i++;

        }else{

            sum+=num[i];

        }

    }

    NSMutableString * result=[[NSMutableString alloc]init];;

    if(flag){//如果正数

        NSLog(@"%d",sum);

        result=[NSMutableString stringWithFormat:@"%d",sum];

    }else{//如果负数

        NSLog(@"-%d",sum);

        result=[NSMutableString stringWithFormat:@"-%d",sum];

    }

    return result;

}


最后如果数据超出题目最开始的范围,具体怎么处理,我还没有考虑清楚,如果哪位大神能帮我把这个方法超过十万以上的功能不全,感激不尽……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值