------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
NSString/NSMutableString:OC字符串处理核心类
NSString/NSMutableString是Foundation框架中的类,是Objective-C
中字符串处理的核心类。这两个类最大的区别:NSString
创建赋值以后,该类字符串除了重新被赋值,其的内容与长度不能动态的更改。NSMutableString
创建赋值以后可以动态更改其内容与长度。其中,NSMutableString类继承了NSString类(在NSString的头文件(NSString.h文件)中可以看到:@interface NSMutableString
: NSString这句代码)。所以NSMutableString类可以使用NSString中的所有方法。
实例代码:
NSString *str1 [email protected]"the first way to create string";//创建NSString字符串 NSMutableString *mstr = [[NSMutableString alloc]initWithString:@"The first way to create "];//创建NSMutableString字符串 <span style="font-size:18px;color:#ff6666;">//将str1字符串的首字母大写,重新赋值给str1(不能在原str上直接修改)</span> str1 =[str1 capitalizedString];//重新赋值可以改变NSString的内容,不赋值不可改变其内容与长度 [mstr appendString:@"mutablestring"];<span style="font-size:18px;color:#ff6666;">//在原mstr后面追加内容,改变了mstr的内容与长度</span>
1.NSString创建
创建方式:
<span style="font-size:18px;color:#ff6666;background-color: rgb(255, 255, 255);">一、直接赋值</span> NSString *str1 [email protected]"the first way to create string"; <span style="font-size:18px;color:#ff6666;">二、常用的对象创建方法</span> NSString *str2 = [[NSString alloc]initWithString:@"The second way to create string"]; <span style="font-size:18px;color:#ff6666;">三、拼接法创建</span> NSString *str3 = [[NSString alloc]initWithFormat:@"第%d种创建方式:%d年%d月%d日",3,2015,4,11]; <span style="font-size:18px;color:#ff6666;">四、将C语言字符串转换为OC字符的创建方式</span> NSString *str4 = [[NSString alloc]initWithUTF8String:"这是const char *(C语言字符串)转换为NSString的方式创建字符串"]; <span style="font-size:18px;color:#ff6666;">五、读取本地文件的创建方式,读取/Users/Mac/Desktop/IOS_study路径下的a.txt文件内容,采用UTF8编码</span> NSString *str5 = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/a.txt" encoding:NSUTF8StringEncoding error:nil]; <span style="font-size:18px;color:#ff6666;">六、读取资源的创建方式</span><span style="color: rgb(255, 102, 102); font-size: 18px; font-family: Arial, Helvetica, sans-serif;">,读取/Users/Mac/Desktop/IOS_study路径下的b.txt文件内容,采用UTF8编码</span><span style="font-size:18px;color:#ff6666;"> </span>NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/Mac/Desktop/IOS_study/b.txt"]; NSString *str6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
实例示范:
// Created by Mac on 15/4/11. // Copyright (c) 2015年 Hua_san. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //一、直接赋值 NSString *str1 [email protected]"the first way to create string"; //二、常用的对象创建方法 NSString *str2 = [[NSString alloc]initWithString:@"The second way to create string"]; //三、拼接法创建 NSString *str3 = [[NSString alloc]initWithFormat:@"第%d种创建方式:%d年%d月%d日",3,2015,4,11]; //四、将C语言字符串转换为OC字符的创建方式 NSString *str4 = [[NSString alloc]initWithUTF8String:"这是const char *(C语言字符串)转换为NSString的方式创建字符串"]; //五、读取本地文件的创建方式,读取/Users/Mac/Desktop/IOS_study路径下的a.txt文件内容,采用UTF8编码 NSString *str5 = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/a.txt" encoding:NSUTF8StringEncoding error:nil]; //路径/Users/Mac/Desktop/IOS_study下的a.txt内容为: 这是第5种创建方式,通过读取文件创建NSString //六、读取资源的创建方式 /** 1.URL:资源路径 2.表示方法:协议头://+路径 3.常见协议头:file(获取本地资源),ftp(获取ftp服务器上的资源),http(获取http服务器上的资源) 4.获取百度图片:http://image.baidu.com..../xxx.png 5.本示例采用UTF8编码,读取本地文件.URL资源路径采用方法2拼接得到:file:///Users/Mac/Desktop/IOS_study/b.txt 6.路径/Users/Mac/Desktop/IOS_study下b.txt存的内容:这是第六种创建方式,通过URL资源读取本地文件,协议头为:file:// */ NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/Mac/Desktop/IOS_study/b.txt"]; NSString *str6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",str1); NSLog(@"%@",str2); NSLog(@"%@",str3); NSLog(@"%@",str4); NSLog(@"%@",str5); NSLog(@"%@",str6); } return 0; }
输出结果:
2015-04-11 18:53:17.239 02-NSString类[1360:64404] the first way to create string 2015-04-11 18:53:17.240 02-NSString类[1360:64404] The second way to create string 2015-04-11 18:53:17.241 02-NSString类[1360:64404] 第3种创建方式:2015年4月11日 2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是const char *(C语言字符串)转换为NSString的方式创建字符串 2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是第5种创建方式,通过读取文件创建NSString 2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是第六种创建方式,通过URL资源读取本地文件,协议头为:file://
2.NSString截取
实例示范:
// Created by Mac on 15/4/11. // Copyright (c) 2015年 Hua_san. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 [email protected]"the first way to create string"; <span style="font-size:18px;color:#ff6666;">//获取字符串的长度</span> NSInteger lenth = [str1 length]; <span style="font-size:18px;color:#ff6666;">//根据索引值,获取字符</span> unichar ch = [str1 characterAtIndex:2];//索引值从0开始计算 <span style="font-size:18px;color:#ff6666;">//截取字符串尾部</span> NSString *end = [str1 substringFromIndex:17];//索引值从0开始计算 <span style="font-size:18px;color:#ff6666;">//截取首部</span> NSString *first = [str1 substringToIndex:3]; <span style="font-size:18px;"> <span style="color:#ff6666;">//获取字符串“to”在str1字符串中的范围</span></span> NSRange range = [str1 rangeOfString:@"to"]; <span style="font-size:18px;color:#ff6666;">//按range的范围,从str1中截取字符串</span> NSString *to_str = [str1 substringWithRange:range]; NSLog(@"%@",str1); NSLog(@"字符串%@的长度为:%ld",str1,lenth); NSLog(@"第3个字符为:%c",ch); NSLog(@"从字符串%@的第18个字符开始,截取其尾部得:%@",str1,end); NSLog(@"对字符串%@,截取前3个字符得:%@",str1,first); NSLog(@"\"to\"字符串在%@中的初始位置:%ld,占用长度为:%ld",str1,range.location,range.length); NSLog(@"对字符串%@,截取范围(初始位置:%ld,长度:%ld)得到字符串:%@",str1,range.location,range.length,to_str); } return 0; }
输出结果:
2015-04-11 19:31:20.065 02-NSString类[1641:77263] the first way to create string 2015-04-11 19:31:20.066 02-NSString类[1641:77263] 字符串the first way to create string的长度为:30 2015-04-11 19:31:20.066 02-NSString类[1641:77263] 第3个字符为:e 2015-04-11 19:31:20.067 02-NSString类[1641:77263] 从字符串the first way to create string的第18个字符开始,截取其尾部得:create string 2015-04-11 19:31:20.067 02-NSString类[1641:77263] 对字符串the first way to create string,截取前3个字符得:the 2015-04-11 19:31:20.067 02-NSString类[1641:77263] "to"字符串在the first way to create string中的初始位置:14,占用长度为:2 2015-04-11 19:31:20.067 02-NSString类[1641:77263] 对字符串the first way to create string,截取范围(初始位置:14,长度:2)得到字符串:to
3.NSString判断比较
实例示范:
<span style="font-size:12px;">// Created by Mac on 15/4/11. // Copyright (c) 2015年 Hua_san. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"the first way to create string"; NSString *str1 = @"the"; </span><span style="font-size:18px;color:#ff6666;">/*1.判断字符串str是否为空</span><span style="font-size:12px;"> str==nil str.length ==0 */ </span><span style="font-size:18px;color:#ff6666;">//2.判断字符串str是否以str1开头</span><span style="font-size:12px;"> BOOL preFix = [str hasPrefix:str1]; </span><span style="font-size:18px;color:#ff6666;">//3.判断字符串str是否以str1结尾</span><span style="font-size:12px;"> BOOL sufFix = [str hasSuffix:str1]; </span><span style="font-size:18px;color:#ff6666;">//4.判断两个字符串是否相等</span><span style="font-size:12px;"> BOOL isEqual = [str isEqualToString:str1]; NSLog(@"\npreFix:%d\nsufFix:%d\nisEqual:%d",preFix,sufFix,isEqual); } return 0; }</span>
输出结果:
<span style="font-size:12px;">2015-04-11 22:03:00.326 02-NSString类[2069:115725] preFix:1 sufFix:0 isEqual:0</span>
4.NSString写入文件
实例示范:
<span style="font-size:12px;">// Created by Mac on 15/4/11. // Copyright (c) 2015年 Hua_san. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"The first way to create string"; NSString *str1 = @"\n这是拼接上去的字符串"; </span><span style="font-size:18px;color:#ff6666;">//将str字符串写入本地文件中。</span><span style="font-size:12px;"> BOOL isWiter = [str writeToFile:@"/Users/Mac/Desktop/IOS_study/c.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; if(isWiter) NSLog(@"第一次写入文件成功!"); else NSLog(@"第一次写入文件失败"); //此处操作文件路径为/Users/Mac/Desktop/IOS_study/c.txt,若文件不存在,则重新创建,若存在直接写人,写入文件将先清空文件中的内容。<span style="color:#ff6666;">atomically:yes是相当打开原子操作</span>(若写入中断,则全部不写入文件)。编码方式:使用UTF-8进行编码。 </span><span style="font-size:18px;color:#ff6666;">//读取文件</span><span style="font-size:12px;"> NSString *readString = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/c.txt" encoding:NSUTF8StringEncoding error:nil]; </span><span style="font-size:18px;color:#ff6666;">//将str1拼接在readString(读出来的字符串)的末尾</span><span style="font-size:12px;"> str1 = [readString stringByAppendingString:str1]; </span><span style="font-size:18px;color:#ff6666;">//写入文件</span><span style="font-size:12px;"> isWiter = [str1 writeToFile:@"/Users/Mac/Desktop/IOS_study/c.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; if(isWiter) NSLog(@"第二次写入文件成功!"); else NSLog(@"第二次写入文件失败"); } return 0; }</span>
输出结果:
<span style="font-size:12px;">2015-04-11 22:42:57.792 02-NSString类[2341:128870] 第一次写入文件成功! 2015-04-11 22:42:57.794 02-NSString类[2341:128870] 第二次写入文件成功!</span>
本地文件c.txt (刚刚写入的文件)内容如下:
The first way to create string
这是拼接上去的字符串
5.NSMutableString可变字符串的常用操作
实例示范:
<span style="font-size:12px;">// Created by Mac on 15/4/11. // Copyright (c) 2015年 Hua_san. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { </span><span style="font-size:18px;"> <span style="color:#ff6666;">//创建可变字符串</span></span><span style="font-size:12px;"> NSMutableString *str=[[NSMutableString alloc]initWithString:@"My name is Object-C"]; NSLog(@"新创建的字符串str:%@",str); </span><span style="font-size:18px;color:#ff6666;">//在其末尾增加字符串,其长度改变,其内容也改变</span><span style="font-size:12px;"> [str appendString:@" JAVA C++"]; NSLog(@"增加内容后的字符串str:%@",str); </span><span style="font-size:18px;color:#ff6666;">//查找Object-C的在str字符串中的范围</span><span style="font-size:12px;"> NSRange range =[str rangeOfString:@"Object-C"]; </span><span style="font-size:18px;color:#ff6666;">//删除Object-C</span><span style="font-size:12px;"> [str deleteCharactersInRange:range]; NSLog(@"删除Object-C后的字符串str:%@",str); } return 0; }</span>
输出结果:
<span style="font-size:12px;">2015-04-11 23:03:56.679 02-NSString类[2490:136327] 新创建的字符串str:My name is Object-C 2015-04-11 23:03:56.680 02-NSString类[2490:136327] 增加内容后的字符串str:My name is Object-C JAVA C++ 2015-04-11 23:03:56.680 02-NSString类[2490:136327] 删除Object-C后的字符串str:My name is JAVA C++</span>
时间: 2024-12-16 17:12:26