中文 => 阿拉伯数字

中文转阿拉伯数字

- (NSString *)arabicNumberalsFromChineseNumberals:(NSString *)arabic{
    arabic = [arabic stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"  ."]];
    // 筛除掉除数字外的文字
    arabic = [arabic stringByReplacingOccurrencesOfString:@"[^0123456789\u4e07\u5343\u767e\u96f6\u4e00\u4e24\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [arabic length])];

    NSLog(@"arabic=====%@",arabic);
    if ([self isAllContainWithString:arabic andContainString:@"1、2、3、4、5、6、7、8、9、0"]==YES)
    {
        return arabic;
    }
    else if (arabic.length==0)
    {
        return @"";
    }
    else
    {

        if ([self isAllContainWithString:arabic andContainString:@"零、一、二、两、三、四、五、六、七、八、九、十"] == NO) {
            
            NSCharacterSet *setToRemove =
            [[ NSCharacterSet characterSetWithCharactersInString:@"零一两二三四五六七八九十 "] invertedSet];
            NSString *newString = [[arabic componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@""];
            arabic = newString;
        }
        NSLog(@"arabic=====%@",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];
        }
        
        
        NSLog(@"%s  %@", __func__, result);
        return result;
        
    }
    
    
}

中文转阿拉伯数字拓展

1 判读是否为时间(到分)

- (BOOL)isTimeStr:(NSString *)timeStr
{
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy MM dd HH mm"];
    NSString * nowDateStr = [formatter stringFromDate:[NSDate date]];
    NSArray * timeArray = [nowDateStr componentsSeparatedByString:@" "];
    
    NSLog(@"nowDateStr====%@",nowDateStr);
    NSString * recoginationYearStr = @"";
    NSString * recoginationMonthStr = @"";
    NSString * recoginationDayStr = @"";
    NSString * recoginationHourStr = @"";
    NSString * recoginationMinuteStr = @"";
    
    //年
    if ([timeStr containsString:@"年"])
    {
        NSString * yearStr = [timeStr componentsSeparatedByString:@"年"][0];
        if ([yearStr isEqualToString:@"今"])
        {
            recoginationYearStr = timeArray[0];
        }
        else if ([yearStr isEqualToString:@"明"])
        {
            int year = [timeArray[0] intValue]+1;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
        }
        else if ([yearStr isEqualToString:@"去"])
        {
            int year = [timeArray[0] intValue]-1;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
            
        }
        else if ([yearStr isEqualToString:@"前"])
        {
            int year = [timeArray[0] intValue]-2;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
            
        }
        else if (yearStr.length==2)
        {
            
            NSString * arbStr = [self arabicNumberalsFromChineseNumberals:yearStr];
            if (arbStr.length == 2)
            {
                recoginationYearStr = [NSString stringWithFormat:@"%@%@",[timeArray[0] substringToIndex:2],arbStr];
                
            }
        }
        else if (yearStr.length==4)
        {
            NSString * arbStr = [self arabicNumberalsFromChineseNumberals:yearStr];
            if (arbStr.length == 4)
            {
                recoginationYearStr = arbStr;
                
            }
            
        }
        else
        {
            recoginationYearStr = @"";
        }
    }
    
    //月
    if ([timeStr containsString:@"月"])
    {
        NSString * monthFrontStr = [timeStr componentsSeparatedByString:@"月"][0];
        NSString * monthStr = monthFrontStr;
        if ([monthFrontStr containsString:@"年"])
        {
            monthStr = [monthFrontStr componentsSeparatedByString:@"年"][1];
        }
        
        if ([self isContainWithString:monthStr andContainString:@"上、上个"])
        {
            if ([timeArray[1] isEqualToString:@"01"] || [timeArray[1] isEqualToString:@"1"])
            {
                recoginationMonthStr = @"12";
                int year = [timeArray[0] intValue]-1;
                recoginationYearStr = [NSString stringWithFormat:@"%d",year];
                
            }
            else
            {
                recoginationMonthStr = [NSString stringWithFormat:@"%02d",[timeArray[1] intValue]-1];
                
            }
        }
        else if ([self isContainWithString:monthStr andContainString:@"这、这个、此"])
        {
            recoginationMonthStr = timeArray[1];
            
        }
        else if ([self isContainWithString:monthStr
                          andContainString:@"下、下个"])
        {
            if ([timeArray[1] isEqualToString:@"12"])
            {
                recoginationMonthStr = @"01";
                int year = [timeArray[0] intValue]+1;
                recoginationYearStr = [NSString stringWithFormat:@"%d",year];
                
            }
            else
            {
                recoginationMonthStr = [NSString stringWithFormat:@"%02d",[timeArray[1] intValue]+1];
                
            }
            
        }
        else
        {
            if ([self arabicNumberalsFromChineseNumberals:monthStr].length==1)
            {
                recoginationMonthStr = [self arabicNumberalsFromChineseNumberals:monthStr];
                
            }
            else
            {
                recoginationMonthStr = [self arabicNumberalsFromChineseNumberals:monthStr];
                
            }
        }
        
    }
    
    //日 号
    if ([self isContainWithString:timeStr andContainString:@"日、号"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号"]];
        NSString * dayStr = @"";
        if (array.count>=2)
        {
            dayStr = array[array.count-2];
        }
        else
        {
            dayStr = array[1];
        }
        recoginationDayStr = [self arabicNumberalsFromChineseNumberals:dayStr];
    }
    
    //点 时
    if ([self isContainWithString:timeStr andContainString:@"点、时"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号点时"]];
        NSString * hourStr = @"";
        if (array.count>=2) {
            hourStr = array[array.count-2];
        }
        else
        {
            hourStr = array[0];
        }
        int hourValue = 0;
        if ([hourStr containsString:@"下午"] || [hourStr containsString:@"晚上"])
        {
            hourValue = [[self arabicNumberalsFromChineseNumberals:hourStr] intValue];
            hourValue = hourValue>12?hourValue:hourValue+12;
        }
        else
        {
            hourValue = [[self arabicNumberalsFromChineseNumberals:hourStr] intValue];
        }
        if (hourStr.length==0)
        {
            recoginationHourStr = @"";
        }
        else
        {
            recoginationHourStr = [NSString stringWithFormat:@"%02d",hourValue];
            
        }
        
    }
    
    //分钟
    if ([self isContainWithString:timeStr andContainString:@"分、点半"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号点时"]];
        NSString * minuteStr = [array lastObject];
        
        if ([minuteStr containsString:@"分"]) {
            minuteStr = [minuteStr stringByReplacingOccurrencesOfString:@"分" withString:@""];
        }
        recoginationMinuteStr = [NSString stringWithFormat:@"%02d",[[self arabicNumberalsFromChineseNumberals:minuteStr] intValue]];
        
    }
    
    if (recoginationYearStr.length>0 || recoginationMonthStr.length>0 || recoginationDayStr.length>0 || recoginationHourStr.length>0 || recoginationMinuteStr.length>0 || [self isContainWithString:timeStr andContainString:@"前天、昨天、今天、明天"])
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

2 文字转时间(年月日时分)

- (NSString *)stringWithTimeStr:(NSString *)timeStr
{
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy MM dd HH mm"];
    NSString * nowDateStr = [formatter stringFromDate:[NSDate date]];
    NSArray * timeArray = [nowDateStr componentsSeparatedByString:@" "];
    
    NSLog(@"nowDateStr====%@",nowDateStr);
    NSString * recoginationYearStr = @"";
    NSString * recoginationMonthStr = @"";
    NSString * recoginationDayStr = @"";
    NSString * recoginationHourStr = @"";
    NSString * recoginationMinuteStr = @"";
    
    //年
    if ([timeStr containsString:@"年"])
    {
        NSString * yearStr = [timeStr componentsSeparatedByString:@"年"][0];
        if ([yearStr isEqualToString:@"今"])
        {
            recoginationYearStr = timeArray[0];
        }
        else if ([yearStr isEqualToString:@"明"])
        {
            int year = [timeArray[0] intValue]+1;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
        }
        else if ([yearStr isEqualToString:@"去"])
        {
            int year = [timeArray[0] intValue]-1;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
            
        }
        else if ([yearStr isEqualToString:@"前"])
        {
            int year = [timeArray[0] intValue]-2;
            recoginationYearStr = [NSString stringWithFormat:@"%d",year];
            
        }
        else if (yearStr.length==2)
        {
            
            NSString * arbStr = [self arabicNumberalsFromChineseNumberals:yearStr];
            if (arbStr.length == 2)
            {
                recoginationYearStr = [NSString stringWithFormat:@"%@%@",[timeArray[0] substringToIndex:2],arbStr];
                
            }
        }
        else if (yearStr.length==4)
        {
            NSString * arbStr = [self arabicNumberalsFromChineseNumberals:yearStr];
            if (arbStr.length == 4)
            {
                recoginationYearStr = arbStr;
                
            }
            
        }
        else
        {
            recoginationYearStr = @"";
        }
    }
    
    //月
    if ([timeStr containsString:@"月"])
    {
        NSString * monthFrontStr = [timeStr componentsSeparatedByString:@"月"][0];
        NSString * monthStr = monthFrontStr;
        if ([monthFrontStr containsString:@"年"])
        {
            monthStr = [monthFrontStr componentsSeparatedByString:@"年"][1];
        }
        
        if ([self isContainWithString:monthStr andContainString:@"上、上个"])
        {
            if ([timeArray[1] isEqualToString:@"01"] || [timeArray[1] isEqualToString:@"1"])
            {
                recoginationMonthStr = @"12";
                int year = [timeArray[0] intValue]-1;
                recoginationYearStr = [NSString stringWithFormat:@"%d",year];
                
            }
            else
            {
                recoginationMonthStr = [NSString stringWithFormat:@"%02d",[timeArray[1] intValue]-1];
                
            }
        }
        else if ([self isContainWithString:monthStr andContainString:@"这、这个、此"])
        {
            recoginationMonthStr = timeArray[1];
            
        }
        else if ([self isContainWithString:monthStr
                          andContainString:@"下、下个"])
        {
            if ([timeArray[1] isEqualToString:@"12"])
            {
                recoginationMonthStr = @"01";
                int year = [timeArray[0] intValue]+1;
                recoginationYearStr = [NSString stringWithFormat:@"%d",year];
                
            }
            else
            {
                recoginationMonthStr = [NSString stringWithFormat:@"%02d",[timeArray[1] intValue]+1];
                
            }
            
        }
        else
        {
            if ([self arabicNumberalsFromChineseNumberals:monthStr].length==1)
            {
                recoginationMonthStr = [NSString stringWithFormat:@"0%@",[self arabicNumberalsFromChineseNumberals:monthStr]];

            }
            else
            {
                recoginationMonthStr = [self arabicNumberalsFromChineseNumberals:monthStr];

            }
        }
        
    }
    
    //日 号
    if ([self isContainWithString:timeStr andContainString:@"日、号"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号"]];
        NSString * dayStr = @"";
        if (array.count>=2)
        {
            dayStr = array[array.count-2];
        }
        else
        {
            dayStr = array[1];
        }
        recoginationDayStr = [NSString stringWithFormat:@"%02d",[[self arabicNumberalsFromChineseNumberals:dayStr] intValue]];
    }
    
    //点 时
    if ([self isContainWithString:timeStr andContainString:@"点、时"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号点时"]];
        NSString * hourStr = @"";
        if (array.count>=2) {
            hourStr = array[array.count-2];
        }
        else
        {
            hourStr = array[0];
        }
        int hourValue = 0;
        if ([hourStr containsString:@"下午"] || [hourStr containsString:@"晚上"])
        {
            hourValue = [[self arabicNumberalsFromChineseNumberals:hourStr] intValue];
            hourValue = hourValue>12?hourValue:hourValue+12;
        }
        else
        {
            hourValue = [[self arabicNumberalsFromChineseNumberals:hourStr] intValue];
        }
        if (hourStr.length==0)
        {
            recoginationHourStr = @"";
        }
        else
        {
            recoginationHourStr = [NSString stringWithFormat:@"%02d",hourValue];
            
        }
        
    }
    
    //分钟
    if ([self isContainWithString:timeStr andContainString:@"分、点半"])
    {
        NSArray * array = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日号点时"]];
        NSString * minuteStr = [array lastObject];
        
        if ([minuteStr containsString:@"分"]) {
            minuteStr = [minuteStr stringByReplacingOccurrencesOfString:@"分" withString:@""];
        }
        recoginationMinuteStr = [NSString stringWithFormat:@"%02d",[[self arabicNumberalsFromChineseNumberals:minuteStr] intValue]];
        
    }
    if (recoginationYearStr.length==0) {
        recoginationYearStr = timeArray[0];
    }
    if (recoginationMonthStr.length==0) {
        recoginationMonthStr = timeArray[1];
    }
    if (recoginationDayStr.length==0) {
        recoginationDayStr = timeArray[2];
    }
    if (recoginationHourStr.length==0) {
        recoginationHourStr = timeArray[3];
    }
    if (recoginationMinuteStr.length==0) {
        if ([timeStr containsString:@"点"])
        {
            recoginationMinuteStr = @"00";
        }
        else
        {
            recoginationMinuteStr = timeArray[4];
            
        }
    }
    
    
    
    NSString * endTime = [NSString stringWithFormat:@"%@年%@月%@日———%@:%@",recoginationYearStr,recoginationMonthStr,recoginationDayStr,recoginationHourStr,recoginationMinuteStr];
    
    NSDateFormatter * formatterStr = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy年MM月dd日———HH:mm:ss"];
    NSDate * endDate = [formatter dateFromString:[NSString stringWithFormat:@"%@:00",endTime]];
    NSLog(@"endDate====%@",endDate);
    if ([timeStr containsString:@"前天"])
    {
        NSDate * endingDate = [NSDate dateWithTimeInterval:-2*60*60*24 sinceDate:endDate];
        endTime = [formatter stringFromDate:endingDate];
    }
    else if ([timeStr containsString:@"昨天"])
    {
        NSDate * endingDate = [NSDate dateWithTimeInterval:-60*60*24 sinceDate:endDate];
        endTime = [formatter stringFromDate:endingDate];
        
    }
    else if ([timeStr containsString:@"明天"])
    {
        NSDate * endingDate = [NSDate dateWithTimeInterval:60*60*24 sinceDate:endDate];
        endTime = [formatter stringFromDate:endingDate];
        
    }
    else if ([timeStr containsString:@"后天"])
    {
        NSDate * endingDate = [NSDate dateWithTimeInterval:2*60*60*24 sinceDate:endDate];
        endTime = [formatter stringFromDate:endingDate];
        
    }
    endTime = [endTime substringToIndex:19];
    
    return endTime;
}
···
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容