ios--二维码名片、电话、短信、邮件等格式识别

.h文件:

//
//  resolveVcard.h
//  PPK365
//
//  Created by IMAC on 13-4-2.
//
//

#import <Foundation/Foundation.h>

@interface resolveVcard : NSObject
+ (NSMutableArray *) dicToMutableArray:(NSMutableDictionary *) vCardArr;
+ (NSMutableDictionary *) vcardTurnToMutableArray:(NSString *) cardString;
+ (NSMutableDictionary *) mecardTurnToMutableArray:(NSString *) cardString;
+ (NSString *) whatString:(id) cardString:(id)valueId;
@end

.m文件:

//
//  resolveVcard.m
//  PPK365
//
//  Created by IMAC on 13-4-2.
//
//

#import "resolveVcard.h"

@implementation resolveVcard

+ (NSString *) whatString:(id) cardString:(id)valueId
{
    NSLog(@"valueId===%@===",valueId);
    NSString *valueStr = [NSString stringWithFormat:@"%@",valueId];
    NSLog(@"id===%@===",cardString);
    NSString *resultStr = [NSString stringWithFormat:@""];
    if ([cardString isEqual:@"NAME"]) {
        resultStr = [resultStr stringByAppendingFormat:@"姓名:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"TITLE"]) {
        resultStr = [resultStr stringByAppendingFormat:@"职位:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"TEL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"电话:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }
    if ([cardString isEqual:@"M"]) {
        resultStr = [resultStr stringByAppendingFormat:@"手机:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }
    if ([cardString isEqual:@"FAX"]) {
        resultStr = [resultStr stringByAppendingFormat:@"传真:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"EMAIL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"邮箱:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"ADDRESS"]) {
        resultStr = [resultStr stringByAppendingFormat:@"地址:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"ORG"]) {
        resultStr = [resultStr stringByAppendingFormat:@"公司:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }if ([cardString isEqual:@"URL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"网址:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }
    
    if ([cardString isEqual:@"BDAY"]) {
        resultStr = [resultStr stringByAppendingFormat:@"生日:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }
    if ([cardString isEqual:@"NOTE"]) {
        resultStr = [resultStr stringByAppendingFormat:@"备注:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr];
    }
    NSLog(@"resultStr===%@===",resultStr);
    return resultStr;
}


+ (NSMutableArray *) dicToMutableArray:(NSMutableDictionary *) vCardArr
{
   NSMutableArray * finalArr = [[NSMutableArray alloc] init];
    if ([vCardArr objectForKey:@"NAME"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"NAME"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"NAME":[vCardArr objectForKey:@"NAME"]];
            [finalArr addObject:Astr];
        }
    }
    if ([vCardArr objectForKey:@"TITLE"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"TITLE"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"TITLE":[vCardArr objectForKey:@"TITLE"]];
            [finalArr addObject:Astr];
        }
    }
    if ([vCardArr objectForKey:@"TEL"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"TEL"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"TEL":[vCardArr objectForKey:@"TEL"]];
            [finalArr addObject:Astr];
        }
        
    }
    if ([vCardArr objectForKey:@"M"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"M"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"M":[vCardArr objectForKey:@"M"]];
            [finalArr addObject:Astr];
        }
        
    }
    if ([vCardArr objectForKey:@"FAX"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"FAX"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"FAX":[vCardArr objectForKey:@"FAX"]];
            [finalArr addObject:Astr];
        }
        
    }
    if ([vCardArr objectForKey:@"EMAIL"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"EMAIL"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"EMAIL":[vCardArr objectForKey:@"EMAIL"]];
            [finalArr addObject:Astr];
        }
        
    }
    if ([vCardArr objectForKey:@"ADDRESS"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"ADDRESS"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"ADDRESS":[vCardArr objectForKey:@"ADDRESS"]];
            [finalArr addObject:Astr];
        }
        
    }
    if ([vCardArr objectForKey:@"ORG"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"ORG"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"ORG":[vCardArr objectForKey:@"ORG"]];
            [finalArr addObject:Astr];
        }
    }
    if ([vCardArr objectForKey:@"URL"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"URL"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"URL":[vCardArr objectForKey:@"URL"]];
            [finalArr addObject:Astr];
        }
    
    }
    if ([vCardArr objectForKey:@"BDAY"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"BDAY"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"BDAY":[vCardArr objectForKey:@"BDAY"]];
            [finalArr addObject:Astr];
        }
    }
    if ([vCardArr objectForKey:@"NOTE"]!=nil) {
        if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"NOTE"]] isEqualToString:@""]) {
            NSString *Astr = [resolveVcard whatString:@"NOTE":[vCardArr objectForKey:@"NOTE"]];
            [finalArr addObject:Astr];
        }
    }
    return finalArr;
}

//其他格式
+ (NSMutableDictionary *) mecardTurnToMutableArray:(NSString *) cardString
{
    /*
     BEGIN CARD:N:李XX;COR:公司名;TIL:经理;TEL:13899;M:186000;EM:xx@xx.com;IM:QQ 1232;ADR:地址;URL:http://xxx.com;;
     */
    /*
     MECARD:N:aaaaa;TEL:234234;EMAIL:3434;ADR:rrrrrrrrrr;URL:http
     */
    /*
     CARD:N:李XX;COR:公司名;ADR:地址;ZIP:43000;TEL:0239999;M:186393939;EM:KK@KK.COM;URL:HTTP://BAIDU.COM;;
     */
    
    NSArray *cardArray;
    
    //   去除CARD:及之前的字符串
    cardString = [cardString substringFromIndex:([cardString rangeOfString: @"CARD:"].location+@"CARD:".length)];
    //没有找到更好的方法,所以还是使用死方法,定死数组字段名。如果以后找到更好的方法再更改
    //预设定:NAME,TEL,EMAIL,ADDRESS,ORG,URL
    cardArray = [cardString componentsSeparatedByString:@";"];
    //a 是一种JSON格式。方便转目录或者数组
    NSString *a = [NSString stringWithFormat:@"{"];
    NSLog(@"%@",cardArray);
    NSMutableDictionary *dicarray =[[NSMutableDictionary alloc] init];
    for (int i=0;i<cardArray.count;i++) {
        NSString *str =[cardArray objectAtIndex:i];
        NSLog(@"str in cardArray is==%@==",str);
        //提取NAME名字
        if ([str hasPrefix:@"N:"]) {
            a = [a stringByAppendingString:@"\"NAME\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"N:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"N:".length)] forKey:@"NAME"];
        }
        //提取TEL电话
        if ([str hasPrefix:@"TEL:"]) {
            a = [a stringByAppendingString:@"\"TEL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TEL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TEL:".length)] forKey:@"TEL"];
        }
        //提取M电话
        if ([str hasPrefix:@"M:"]) {
            a = [a stringByAppendingString:@"\"M\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"M:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"M:".length)] forKey:@"M"];
        }
        //提取BDAY生日
        if ([str hasPrefix:@"BDAY:"]) {
            a = [a stringByAppendingString:@"\"BDAY\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"BDAY:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"BDAY:".length)] forKey:@"BDAY"];
        }
        //提取FAX传真
        if ([str hasPrefix:@"FAX:"]) {
            a = [a stringByAppendingString:@"\"FAX\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"FAX:".length)]];
            a = [a stringByAppendingString:@"\","];
             [dicarray setObject:[str substringFromIndex:(@"FAX:".length)] forKey:@"FAX"];
        }
        //提取EMAIL电邮
        
        if ([str hasPrefix:@"EMAIL:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
            a = [a stringByAppendingString:@"\","];
             [dicarray setObject:[str substringFromIndex:(@"EMAIL:".length)] forKey:@"EMAIL"];
        }
        if ([str hasPrefix:@"EM:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EM:".length)]];
            a = [a stringByAppendingString:@"\","];
             [dicarray setObject:[str substringFromIndex:(@"EM:".length)] forKey:@"EMAIL"];
        }
        
        //提取ADR地址
        if ([str hasPrefix:@"ADR:"]) {
            a = [a stringByAppendingString:@"\"ADDRESS\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
            a = [a stringByAppendingString:@"\","];
             [dicarray setObject:[str substringFromIndex:(@"ADR:".length)] forKey:@"ADDRESS"];
        }
        
        //提取ORG公司
        if ([str hasPrefix:@"ORG:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"ORG:".length)] forKey:@"ORG"];
        }
        if ([str hasPrefix:@"COR:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"COR:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"COR:".length)] forKey:@"ORG"];
        }
        
        //提取URL网址
        if ([str hasPrefix:@"URL:"]) {
            a = [a stringByAppendingString:@"\"URL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"URL:".length)] forKey:@"URL"];
        }
        //提取TITLE
        if ([str hasPrefix:@"TITLE:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TITLE:".length)] forKey:@"TITLE"];
        }
        //提取TIL
        if ([str hasPrefix:@"TIL:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TIL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TIL:".length)] forKey:@"TITLE"];
        }
        //提取NOTE
        if ([str hasPrefix:@"NOTE:"]) {
            a = [a stringByAppendingString:@"\"NOTE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"NOTE:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"NOTE:".length)] forKey:@"NOTE"];
        }
    }
    a = [a stringByAppendingString:@"\"end数组结束end\":\""];
    a = [a stringByAppendingString:@""];
    a = [a stringByAppendingFormat:@"\"}"];
    NSLog(@"a==%@",dicarray);
    return dicarray;
   // return a;
}

//将标准vcard数据转可变数组
+ (NSMutableDictionary *) vcardTurnToMutableArray:(NSString *) cardString
{
    /*
     //以下是一个标准的vcard格式
     BEGIN:VCARD
     VERSION:3.0
     N:X;XX
     TEL:1383838438
     EMAIL:xx@xx.com
     ADR:;;地址;;城市;邮编
     ORG:公司
     TITLE:
     URL:网址
     NOTE:QQ:998
     END:VCARD
     */
    
    NSArray *cardArray;
    //判断是否是正规的vcard格式
    if ([cardString hasPrefix:@"BEGIN:VCARD"]){
        //去除掉头部
        cardString = [cardString substringFromIndex:(@"BEGIN:VCARD\n".length)];
        
        NSLog(@"取后的cardstring  :===%@==",cardString);
        //分割转换成数组
        cardArray = [cardString componentsSeparatedByString:@"\n"];
        NSLog(@"分割后的数组  :%@",cardArray);
        
    }
    
    //没有找到更好的方法,所以还是使用死方法,定死数组字段名。如果以后找到更好的方法再更改
    //预设定:NAME,TEL,EMAIL,ADDRESS,ORG,URL
    NSMutableDictionary *dicarray =[[NSMutableDictionary alloc] init];
    NSString *a = [NSString stringWithFormat:@"{"];
    for (NSString *str in cardArray) {
        
        NSLog(@"str in cardArray is==%@==",str);
        //提取NAME名字
        if ([str hasPrefix:@"N:"]) {
            a = [a stringByAppendingString:@"\"NAME\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"N:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"N:".length)] forKey:@"NAME"];
        }
        //提取TEL电话
        if ([str hasPrefix:@"TEL:"]) {
            a = [a stringByAppendingString:@"\"TEL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TEL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TEL:".length)] forKey:@"TEL"];
        }
        //提取M电话
        if ([str hasPrefix:@"M:"]) {
            a = [a stringByAppendingString:@"\"M\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"M:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"M:".length)] forKey:@"M"];
        }
        //提取BDAY生日
        if ([str hasPrefix:@"BDAY:"]) {
            a = [a stringByAppendingString:@"\"BDAY\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"BDAY:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"BDAY:".length)] forKey:@"BDAY"];
        }
        //提取FAX传真
        if ([str hasPrefix:@"FAX:"]) {
            a = [a stringByAppendingString:@"\"FAX\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"FAX:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"FAX:".length)] forKey:@"FAX"];
        }
        //提取EMAIL电邮
        if ([str hasPrefix:@"EMAIL:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"EMAIL:".length)] forKey:@"EMAIL"];
        }
        //提取ADDRESS地址
        if ([str hasPrefix:@"ADR:"]) {
            a = [a stringByAppendingString:@"\"ADDRESS\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"ADR:".length)] forKey:@"ADDRESS"];
        }
        //提取ORG公司
        if ([str hasPrefix:@"ORG:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"ORG:".length)] forKey:@"ORG"];
        }
        //提取URL网址
        if ([str hasPrefix:@"URL:"]) {
            a = [a stringByAppendingString:@"\"URL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"URL:".length)] forKey:@"URL"];
        }
        //提取TITLE
        if ([str hasPrefix:@"TITLE:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TITLE:".length)] forKey:@"TITLE"];
        }
        //提取TIL
        if ([str hasPrefix:@"TIL:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TIL:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"TIL:".length)] forKey:@"TITLE"];
        }
        //提取NOTE
        if ([str hasPrefix:@"NOTE:"]) {
            a = [a stringByAppendingString:@"\"NOTE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"NOTE:".length)]];
            a = [a stringByAppendingString:@"\","];
            [dicarray setObject:[str substringFromIndex:(@"NOTE:".length)] forKey:@"NOTE"];
        }
    }
    a = [a stringByAppendingString:@"\"end数组结束end\":\""];
    a = [a stringByAppendingString:@""];
    a = [a stringByAppendingFormat:@"\"}"];
    NSLog(@"a==%@",dicarray);
    return dicarray;
}

@end


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值