zoukankan      html  css  js  c++  java
  • 搜索联系人是去掉拼音中的空格

    在搜索联系人时,因为存储进数据库的字段中含有空格,造成在按拼音搜索联系人的时候也必须加入空格,很不方便,所以今天请教大神,在从解析数据的时候就将名字转为拼音,去掉空格,所以在解析时候使用如下代码红色标记的那段:

    - (void)syncContact

    {

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        dispatch_sync(queue, ^{

            NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];

            NSString* strToken = [pref stringForKey:@"logintoken"];

            //向管理平台登录,获取token

            NSString *strUrl = [NSString stringWithFormat:@"%@/syncMember?token=%@",WEB_SERVER_HOST,strToken];

            NSURL *url = [NSURL URLWithString:strUrl];

            __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

            [request setCompletionBlock:^{

                NSString *responseString = [request responseString];

                NSError *error = nil;

                NSData *jsonData = [responseString dataUsingEncoding:NSUTF8StringEncoding];

                NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];

                NSString* msgCode = [dict objectForKey:@"code"];

                if ([msgCode isEqualToString:@"200"]) {

                    NSLog(@"get contact success!");

                    

                    NSDictionary *memberDict = [dict objectForKey:@"peoples"];

                    for (NSDictionary* d in memberDict) {

                        CBContact *contact = [[CBContact alloc]init];

                        

                        contact.strContactID = [d objectForKey:@"memid"];

                        contact.strName = [d objectForKey:@"name"];

                        contact.strTelePhone = [d objectForKey:@"tel"];

                        contact.strMotion = [d objectForKey:@"motto"];

                        contact.strAvatar = [d objectForKey:@"avatar"];

                        if (contact.strAvatar == nil) {

                            contact.strAvatar = @"";

                            NSLog(@"-------------- stravatar is null--------------");

                        }

                        contact.strEmail = [d objectForKey:@"email"];

                        contact.strNickName = [d objectForKey:@"nick"];

                        contact.strBirth = [d objectForKey:@"birth"];

                        contact.strGender = [d objectForKey:@"gender"];

                        

                        //公司信息

                        NSDictionary *corp = [d objectForKey:@"corporation"];

                        contact.strCorpName = [corp objectForKey:@"corpName"];

                        contact.strAddress = [corp objectForKey:@"address"];

                        //去掉中的空格

                        contact.strPinyin = [[self phonetic:contact.strName]stringByReplacingOccurrencesOfString:@" " withString:@""];

                        [arrayContacts insertObject:contact atIndex:0];

                        [self saveContact:contact];

                        NSLog(@"save contact:%@",contact.strName);

                    }

                    //按拼音排序

                    arrayContacts =  [NSMutableArray arrayWithArray:[arrayContacts sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

                        NSString *firstPinyin = [(CBContact*)obj1 strPinyin];

                        NSString *secondPinyin = [(CBContact*)obj2 strPinyin];

                        return [firstPinyin compare:secondPinyin];

                    }]];

                    [self configureSections];

                    [self.tableContact reloadData];

                }

                else if([msgCode isEqualToString:@"404"]) {

                    NSLog(@"找不到用户");

                    //  [SVProgressHUD showErrorWithStatus:@"用户名或密码有误"];

                    return;

                }

                else{

                    ;// [SVProgressHUD dismiss];

                }

                NSLog(@"msgCode is %@",msgCode);

                // Use when fetching binary data

                //NSData *responseData = [request responseData];

                

                dispatch_async(dispatch_get_main_queue(), ^{

                    [self loadContact];

                    [self.tableContact reloadData];

                });

                

            }];

            [request setFailedBlock:^{

                NSError *error = [request error];

                NSLog(@"login result:%@",error.description);

            }];

            [request startAsynchronous];

        });

    }

    以上方法时我发送请求并且解析的完整方法,采用了除掉字段中所有空格的方法

    附上网上收集的有关空格的方法,供我自己参考:

    1.去掉两端的空格

    [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]  

    2.去掉多余的空格

    NSString *str = @"    this     is a    test    .   ";

    NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet];

    NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"]; 

    NSArray *parts = [str componentsSeparatedByCharactersInSet:whitespaces];

    NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings];

    str = [filteredArray componentsJoinedByString:@" "]; 

    3.去掉所有空格

    [str stringByReplacingOccurrencesOfString:@" " withString:@""]

  • 相关阅读:
    hihoCoder #1077 RMQ问题再临-线段树
    ms sql 获取字符串首字母
    如何设置gen_server在退出时执行相关操作
    C++拾遗
    [置顶] Linux下文件和目录权限说明
    Android百度地图之显示地图
    USACO March. 2012
    JNI之HelloWorld
    复习C语言系列二:动态调用函数指针数组
    HDU2527:Safe Or Unsafe(哈弗曼树)
  • 原文地址:https://www.cnblogs.com/tuhaoYY/p/3853061.html
Copyright © 2011-2022 走看看