1、iOS_NSString(字符串)

//    1、字符串的创建
    NSString * string1 = @"123abc";
    NSString * string2 = [NSString stringWithFormat:@"123%@",string1];//@"123123abc"
    NSString * string3 = [[NSString alloc] init];
    string3 = @"abcd";
    NSString * string4 = [[NSString alloc] initWithString:@"1234"];
    char *Cstring = "我是字符串";
    NSString * string5 = [[NSString alloc] initWithUTF8String:Cstring];
    NSString * string6 = [[NSString alloc] initWithUTF8String:"abcd"];
   
//    @property (nonatomic, strong) NSString* strongedString;
//    @property (nonatomic, copy) NSString* copyedString;
    //在不可变字符串赋值中,strong和copy都是没有问题的,而在可变数组赋值中,我们大多数情况下不想因为赋值而改变了原有字符串的属性,所以我们日常工作中我们使用最多的还是copy属性。但是根据实际情况不同,也可以使用strong属性。
   

//    2、字符串比较是否相同
    NSString * string7 = @"abcd";
    NSString * string8 = @"abcd";
    NSString * string9 = @"Abcd";
   
    [string7 isEqualToString:string8];//YES
    [string7 isEqualToString:string9];//NO
   
   
//    3、compare 比较字符串升序、相同还是降序,比较原理:首先比较第一个字符(ASCII码比较),如果是升序就为升序,如果相同比较下一个字符。。。
     NSString *str1 = @"abcd";
     NSString *str2 = @"ABCD";
     NSComparisonResult result = [str1 compare:str2];
     // caseInsensitiveCompare 忽略大小写比较
     //        NSComparisonResult result2 = [s7 caseInsensitiveCompare:s8];
     if (result == NSOrderedAscending) {
             NSLog(@"升序");
     } else if(result == NSOrderedSame) {
             NSLog(@"相同");
         } else if(result == NSOrderedDescending) {
                 NSLog(@"降序");
             }

//    4、length 计算字符串字符的个数
     NSString *str3 = @"123456";
     NSString *str4 = @"12345678";
     NSUInteger len1 = [str3 length];//str3.length
     NSUInteger len2 = [str4 length];
     NSLog(@"len1 = %ld ,len2 = %ld", len1, len2);

      //————————————————————————————字符串的转化 ————————————————————————————
     /*
          1、大小写的转换
          2、与基本数据类型的转换
          */

     NSString *str5 = @"hello WORLD";
     NSString *str6 = [str5 uppercaseString]; // 全部转为大写
     NSString *str7 = [str5 lowercaseString]; // 全部转为小写
     NSString *str8 = [str5 capitalizedString]; // 首字母大写
     NSLog(@"转为大写:%@",str6);
     NSLog(@"转为小写:%@",str7);
     NSLog(@"转为首字母大写:%@",str8);

//     6、转为基本数据类型,只能是数字字符串可以转化
     NSString *str9 = @"1234";
     int value1 = [str9 intValue];
     float value2 = [str9 floatValue];
     double value3 = [str9 doubleValue];
     BOOL value4 = [str9 boolValue];
     NSLog(@"value1 = %d",value1);
     NSLog(@"value2 = %f",value2);
     NSLog(@"value3 = %lf",value3);
     NSLog(@"value4 = %d",value4);
   
    NSString * string91 = @"123abc1234";
    NSInteger value5 = [string91 integerValue];//123  如果不是纯数字的字符串,转换成数字类型之后只会显示字符串最前边的数字


     //————————————————————————————字符串的拼接——————————————————————————————

     NSString *str10 = @"11";
     NSString *str11 = @"22";

     NSString *str12 = [[NSString alloc] initWithFormat:@"%@%@",str10,str11];
     NSLog(@"str12 :%@",str12);//1122

     NSString *str13 = [str10 stringByAppendingString:str11];
     NSLog(@"str13 :%@",str13);//1122

     NSString *str14 = [str10 stringByAppendingFormat:@"%@33",str11]; //可以追加
     NSLog(@"str14 :%@",str14);//112233


     //————————————————————————————字符串的查找替换———————————————————————————

     // 方式一:
     NSString *str15 = @"549686034@qq.com";
     //rangeOfString 查找字符串所在的位置 返回NSRange类型
     NSRange range = [str15 rangeOfString:@"@qq.com"];
     //NSNotFound 用于判断是否找到
     if (range.location != NSNotFound) {
         NSLog(@"包含字符串");
     } else{
             NSLog(@"不包含字符串");
         }

     // 方式二:查找并且替换
     NSString *newString = [str15 stringByReplacingOccurrencesOfString:@"qq.com" withString:@"163.com"];
     NSLog(@"newString :%@",newString);


     //————————————————————————————字符串的截取———————————————————————————

     NSString *str16 = @"1234567890";

     // substringToIndex:从字符串开始截取到指定的位置,是从0开始
     NSLog(@"截取的:%@",[str16 substringToIndex:2]);

     // substringFromIndex:从指定位置截取到字符串结尾
     NSLog(@"截取的1:%@",[str16 substringFromIndex:2]);

     // substringWithRange:截取指定的范围
     NSRange range1 = {1,3};
     //        NSRange range2 = NSMakeRange(1, 3); // NSrange的两种创建方式
     NSLog(@"截取的2:%@",[str16 substringWithRange:range1]);

     // 取指定位置的字符
     char c = [str16 characterAtIndex:1];
     NSLog(@"c = %c",c);


     /*=============================NSMutableString(可变字符串)常用方法========================*/

     // 1、————————————————————————————可变字符串的创建———————————————————————————
     NSMutableString *mstr1 = [[NSMutableString alloc] initWithFormat:@"zxcvbnm"];
     NSMutableString *mstr2 = [NSMutableString stringWithFormat:@"asdfghjkl"];

     //        NSMutableString *ms3 = @"hjkl;"; 可变的字符串不能这么写


     // 2、————————————————————————————可变字符串的插入、删除、追加、替换———————————————————————————
     // insertString:atInde: 将字符串插入到指定的位置,不需要返回新的字符,这是跟不可变字符串的区别
     [mstr1 insertString:@"1111" atIndex:1];
     NSLog(@"ms1 :%@",mstr1);

     // deleteCharactersInRange :删除指定范围的字符串
     NSRange range3 = {2,3};
     [mstr2 deleteCharactersInRange:range3];
     NSLog(@"mstr2 :%@",mstr2);

     //字符串的拼接
     [mstr2 appendString:@"00"];
     [mstr2 appendFormat:@"%d99",200];// 可以追加
     NSLog(@"mstr2 :%@",mstr2);

     //字符串替换
     NSMutableString *mstr3 = [[NSMutableString alloc] initWithFormat:@"YYXXZZ"];
     NSRange range4 = [mstr3 rangeOfString:@"ZZ"];
     // replaceCharactersInRange:withString: 将指定范围的字符串替换
     [mstr3 replaceCharactersInRange:range4 withString:@"VV"];
     NSLog(@"mstr3:%@",mstr3);

     // 设置新的字符串  跟直接赋值效果一样,是用新的字符串内容将原有的字符串内容替换掉
     [mstr3 setString:@"000000000"];
     NSLog(@"new_mstr3:%@",mstr3);
   
   
//    1.字符串转字典
   
    NSString * jsonString = @"123";
   
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError * err;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
   
   
//    字符串的扩展中可以这样写
//    NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
//    __autoreleasing NSError* error = nil;
//    id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
//    if (error != nil) return nil;
//    return result;
   
   
   
//    2.字典转字符串
    NSError * parseError;
    NSData * jsonData1 = [NSJSONSerialization dataWithJSONObject:dic
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:&parseError];
   
    NSString * str = [[NSString alloc] initWithData:jsonData1 encoding:NSUTF8StringEncoding];

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容