NSString和NSMutableString的用法
字符串是程序设计最常用的数据类型之一。一个NSString对象就代表一个字符串,一般称NSString为字符串类,有别于普通的string为数据类型,NSString是NSObject(Foundation的基础对象)的子类,所以具有NSObject的所有特性。
NSString 初始化:有如下两种方式
最直接的方式:创建常量字符串,注意使用“@“符号,下面三个都分布在常量区
NSString *str = @”abc”;
NSString *str2 = [NSString stringWithString:@”%@”,@”jack”];
NSString *str3 = [[NSString alloc] initWithString:@”My age id %d”,10];
格式化的方式: // 这种方式存储在内存的堆区(地址不一样)
NSString *str4 = [NSString stringWithFormat:@”%@”,@”jack”];
NSString *str5 = [[NSString alloc] initWithFormat:@”My age id %d”,10];
下面介绍NSString的用法:
读文件操作:
NSString *path = [[NSBundlemainBundle] pathForResource:@"astring.text"ofType:nil];
NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
NSLog(@"astring:%@",astring);
写文件操作:
NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
NSLog(@"astring:%@",astring);
NSString *path = @"astring.text";
[astring writeToFile: path atomically: YES];
<span style="font-size:14px;">BOOL flag = [str1 isEqualToString: str2] //只是比较内容是否相等,不比较地址
if(flag)
{
NSLog(@"两个字符串相等");
}</span>
字符串加上分配区域比较:
两个字符串比较的不仅内容还有内容在那个内存块分配的。compare:的返回类型是称为NSComparisonResult的Cocoa的枚举数据类型,它有三个可能的值:NSOrderedAscending,NSOrderedSame,NSOrderedDescending(它们只是在基础框架中定义的常数,分别等于整数-1,0,1)。
BOOL result = [string1 compare: string2] == NSOrderedAscending;
字符串查询子字符串:
NSRange range = [string1 rangeOfString:string2];// range是个结构体还有location和length两个成员
int location = range.location; // 返回字符串在父字符串中的位置
int length = range.length; //返回字符串的长度
字符串截取、分解和整合:
NSString *a = @"1.2.30";
NSString *b = [a substringWithRange:NSMakeRange(4,2)]; //字符串的截取
NSString *text = @"400-1234-56789";
NSArray *parts = [text componentsSeparatedByString:@"-"]; //字符串的分解
NSArray *array = @[@"400",@"1234",@"56789"];
NSString * part = [array componentsJoinedByString:@"-"]; //以指定字符串为连接符将数组拼接成字符串
NSMutableString跟NSString 的区别在于它初始化后还能往字符串中添加其他的字符串,其他的用法都一样。
NSMutableString初始化:
<span style="font-size:18px;">NSMutableString * str = [[NSMutableString alloc] init];
[str appendString:@"aaa"]; //添加普通的字符串 </span>
添加字符串:
<span style="font-size:18px;">[str appendFormat:@"我的名字:%@ ",@"justcoding"];
[str appendString:@"1"];// 在末位附加字符串nsstring
[str insertString @"2" atIndex:1];// 以索引i为起点位置插入nsstring
//索引i是从0开始的</span>
删除字符串:
[str deleteCharactersInRange:<span style="font-family: Arial; font-size: 14px; line-height: 26px;">NS</span><span class="s10" style="font-family: Arial; font-size: 14px; line-height: 26px;">M</span><span style="font-family: Arial; font-size: 14px; line-height: 26px;">akeR</span><span class="s9" style="font-family: Arial; font-size: 14px; line-height: 26px;">ange(1,</span><span style="font-family: Arial; font-size: 14px; line-height: 26px;"> 2)</span>];// 删除置顶的range中的字符
替换字符串:
[str replaceCharactersInRange:<span style="font-family: Arial; font-size: 14px; line-height: 26px;">NS</span><span class="s10" style="font-family: Arial; font-size: 14px; line-height: 26px;">M</span><span style="font-family: Arial; font-size: 14px; line-height: 26px;">akeR</span><span class="s9" style="font-family: Arial; font-size: 14px; line-height: 26px;">ange(0,</span><span style="font-family: Arial; font-size: 14px; line-height: 26px;"> 2)</span><span style="font-family: Arial, Helvetica, sans-serif;"> WithString:@"23"];// 使用nstring 替换range指定的字符</span>
NSString 字符串常用方法:
+(id)string // 创建一个新的字符串
+(id)stringWithString:nsstring // 创建一个新字符串,并将其设置为nsstring变量值
+(NSString *) stringWithFormat:format, arg, arg1,arg2... 格式化一个字符串到变量
-(id)stringByAppendingFormat:string // 组合字符串并格式化
-(id)initWithString:nsstring // 将新分配的字符串设置为nsstring
-(id)initWithContentsOfFile:path encoding:enc error:err // 返回一个文件里的字符串
-(id)initWithContentsOfURL:url, encoding:enc error:err // 返回一个url里的字符串,url参数,编码参数,错误信息
-(NSUInteger)length // 返回字符串的长度
-(unichar) characterAtIndex:i // 返回索引为i的unicode字符
-(NSString *)substringFormIndex:i // 返回从i开始到结尾的字符串
-(NSString *) substringWithRange:range // 根据指定的范围返回字符串
-(NSString *) substringToIndex:i // 从开始一直到索引i的字符串
-(NSComparator *) caseInsensitiveCompare:nsstring // 比较两个字符串,忽略大小写
-(NSComparator *)compare:nsstring // 比较两个字符串
-(BOOL)hasPrefix:Nsstring // 测试字符串是否nsstring开始
-(BOOL)hasSubfix:nsstring // 测试字符串是否以nsstring结尾
-(BOOL)isEqualToString:nsstring // 测试两个字符串是否相等
-(NSString *)capializedString // 返回每个单词的首字母大写,其他字母小写
-(NSString *) uppercaseString //转大写
-(NSString *) lowercaseString // 转小写
-(const *char *) UTF8String // 返回utf8 C字符串样式
-(double) doubleValue // 转为double的字符串
-(float) floatValue // 返回字符串表示的双精度点数
-(NSInteger)integerValue // 返回字符串的NSinteger整数标识
-(int)intValue // 返回转换为整数的字符串
NSMutableString 常用方法
+(id)stringWithCapacity:size // 创建一个初始化包含size的字符串
-(id)intiWithCapacity:size // 使用初始容量为size的字符串来初始化字符串
-(void)setString:nsstring // 将字符串设置为nsstring
-(void)appendString:nsstring // 在末位附加字符串nsstring
-(void)deleteCharactersInRange:range // 删除置顶的range中的字符
-(void)insertString nstring atIndex:i // 以索引i为七点位置插入nsstring
-(void)replaceCharactersInRange:range WithString:nsstring // 使用nstring 替换range指定的字符
-(void)replaceOccurrencesofString:nsstring withString:nstring2 options:opts range:range // 在置顶范围内用range中的nsstring2 替换所有的nsstring 1