OC之NSString详解

本文探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用与区别,包括其优势、特性和最佳实践,旨在帮助开发者选择更适合项目的语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/1.直接赋值,常量池

    NSString * str =@"this is a string";

    NSLog(@"%d",str.retainCount);

    

    //2.先开辟空间,初始化,再赋值,常量池

   NSString * str = [[NSStringalloc]init];

    str = @"this is a string";

    NSLog(@"%d",str.retainCount);

    

    //3.开辟空间,调用初始化方法,常量池

   NSString * str = [[NSStringalloc]initWithString:@"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //4.UTF-8编码格式的字符串创建字符串对象,未在常量池中

   NSString * str = [[NSStringalloc]initWithUTF8String:"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //5.创建格式化的字符串(占位符是%加上代表类型的字符组成),未在常量池中

   NSString * str = [NSStringstringWithFormat:@"%@",@"this is a string"];

    NSLog(@"%d",str.retainCount);

    

    //6.从文件读取字符串

    NSString * path =@"/Users/ibokan/Desktop/test.txt";

    //如果在枚举里没有对应的编码,则需要自己转码

    //NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

   NSError * error = nil;

   NSString * str = [NSString stringWithContentsOfFile:path encoding:4 error:&error];

   if (error != nil) {

       NSLog(@"读取文件失败,错误信息:%@",[error localizedDescription]);

    }else{

        NSLog(@"读取成功,文件内容为:%@",str);

    }


    //7.URL读取字符串,不在常量池里

   NSError * error = nil;

    //url很广泛,可以用于http地址,可以ftp地址,可以文件地址

    NSURL * url = [NSURLURLWithString:@"http://www.baidu.com"];

    //NSURL * url = [NSURL URLWithString:@"file:////Users/ibokan/Desktop/test.txt"];

    NSString * str = [NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncodingerror:&error];

   if (error != nil) {

       NSLog(@"读取文件失败,错误信息:%@",[error localizedDescription]);

    }else{

       NSLog(@"读取成功");

    }

    NSLog(@"\n%d",str.retainCount);


字符串写入文件:

    //字符串写入文件。path为服务端地址,也可以向服务端写入,但是一般不这么用

    NSString * str =@"that is a string";

   NSError * error = nil;

    NSString * path =@"/Users/ibokan/Desktop/baidu.txt";

    [str writeToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:&error];

   if (error != nil) {

       NSLog(@"保存文件失败,错误信息:%@",[error localizedDescription]);

    }else{

       NSLog(@"保存成功");

    }


字符串除了拿来显示,还可以用来比较,匹配,查找:

    //1.字符串比较,调用Cstrcmp函数,s1>s2返回值>0 ,s1=s2 返回值=0 , s1<s2 返回值<0

   char * str1 ="string";

   char * str2 ="strjng";

   printf("%d",strcmp(str1, str2));

    //2.NSStringcompare方法,类似于Cstrcmp函数,s1>s2返回值>0, s1=s2 返回值=0, s1<s2 返回值<0

    NSString * str1 =@"string";

    NSString * str2 =@"sting";

    NSLog(@"%d",[str1compare:str2]);


    //3.NSStringcompare方法,忽略大小写比较

    NSString * str1 =@"string";

    NSString * str2 =@"String";

    NSLog(@"%d",[str1caseInsensitiveCompare:str2]);


    //4.NSStringcompare方法,忽略大小写比较长度,options的参数来用

    NSString * str1 =@"string";

    NSString * str2 =@"Strings";

    NSLog(@"%d",[str1compare:str2options:NSNumericSearch|NSCaseInsensitiveSearch]);

    

    //5.两个字符串进行匹配,str1有包含str2,则返回一个nsrange结构体。只能简单匹配,更复杂的需要用正则。

    NSString * str1 =@"That is a string";

   NSString * str2 = @"string";

   NSRange strRange = [str1 rangeOfString:str2];

   NSLog(@"起始位置为:%d,长度为:%d",strRange.location,strRange.length);


    //6.查找前缀,一定是从头开始,类似于正则的^

    NSString * str =@"http://www.baidu.com";

   NSLog(@"%i",[strhasPrefix:@"www"]);


    //7.查找后缀,类似于正则的$,用于匹配文件类型非常好用

    NSString * str =@"http://www.baidu.com";

   NSLog(@"%i",[strhasSuffix:@"com"]);


    //8.取拓展名

   NSString *Path = @"~/json.txt";

    NSLog(@"Extension:%@",[PathpathExtension]);


    //9.取缩写,不知道什么用,留个记号

   NSString *Path = @"~/json.txt";

   NSString *absolutePath = [Path stringByExpandingTildeInPath];

   NSLog(@"absolutePath:%@",absolutePath);

    NSLog(@"Path:%@",[PathstringByAbbreviatingWithTildeInPath]);



字符串截取操作:

    //1.从前面开始截取字符串到第几个字符

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1 substringToIndex:3];

   NSLog(@"string2:%@",string2);


    //2.从第几个字符开始截取字符串

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1 substringFromIndex:3];

   NSLog(@"string2:%@",string2);


    //3.从第几个字符开始截取几个字符串

    NSString *string1 =@"This is a string";

   NSString *string2 = [string1 substringWithRange:NSMakeRange(10,3)];

   NSLog(@"string2:%@",string2);


字符串的拼接操作:

    //1.连接字符串

    NSString * str1 =@"This is a string";

   NSString * str2 = @"Hello world";

   NSString * str3 = [str1 stringByAppendingString:str2];

   NSLog(@"str3:%@",str3);


    //2.连接字符串,使用格式符

    NSString * str1 =@"This is a string";

   NSString * str2 = @"Hello world";

   NSString * str3 = [str1 stringByAppendingFormat:@",%d,%@",123,str2];

   NSLog(@"str3:%@",str3);


接下来是插入,这里要注意,这里的是可变字符串:

    //1.可变字符串,插入一个新字符串,这里要注意下标不要越界

    NSMutableString * str = [[NSMutableStringalloc]initWithCapacity:0];

    [str insertString:@"this is a mutableString"atIndex:0];

    [str insertString:@"1233"atIndex:1];

   NSLog(@"%@",str);


    //2.可变字符串,追加一个字符串

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this is a string"];

    [str appendString:@"HELLO,WORLD"];

   NSLog(@"%@",str);


    //3.可变字符串,赋值

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this is a string"];

    [strsetString:@"123"];

   NSLog(@"%@",str);


    //4.可变字符串,删除一个范围

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this is a string"];

    [str deleteCharactersInRange:NSMakeRange(1,2)];

   NSLog(@"%@",str);


    //5.可变字符串,替换一个范围的字符串

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this is a string"];

    [str replaceCharactersInRange:NSMakeRange(1,2) withString:[NSStringstringWithFormat:@"99999"]];

   NSLog(@"%@",str);


    //6.可变字符串,替换所有出现过的字符串,在制定长度里

    NSMutableString * str = [[NSMutableStringalloc]initWithFormat:@"this is a string"];

    int result = [strreplaceOccurrencesOfString:@"s"withString:@"123"options:NSCaseInsensitiveSearchrange:NSMakeRange(0,13)];

    NSLog(@"替换了%d个字符串,新的字符串为:%@",result,str);



    //1.修改大小写的方法

    NSString *string1 =@"A String";

    NSString *string2 =@"StrIng,this is a string";

    //全部改大写

    NSLog(@"string1:%@",[string1uppercaseString]);

    //全部改小写

    NSLog(@"string2:%@",[string2lowercaseString]);

    //首字母大写,其余小写

    NSLog(@"string2:%@",[string2capitalizedString]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值