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

来源:互联网 发布:java 超级打码 编辑:程序博客网 时间:2024/06/01 08:49

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

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

    NSMutableDictionary * mdic =[[NSMutableDictionaryalloc]init];

    

    [mdic setObject:[NSNumbernumberWithInt:10000]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:1000]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:100]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:10]forKey:@""];

    

    [mdic setObject:[NSNumbernumberWithInt:9]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:8]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:7]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:6]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:5]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:4]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:3]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:2]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:2]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:1]forKey:@""];

    [mdic setObject:[NSNumbernumberWithInt:0]forKey:@""];

    

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


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

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

    if([sisEqualToString:@""]){

        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=[[NSMutableStringalloc]init];;

    if(flag){//如果正数

        NSLog(@"%d",sum);

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

    }else{//如果负数

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

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

    }

    return result;

}


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

0 0
原创粉丝点击