Objective-C基础—字符串对象NSString,NSMutableString

来源:互联网 发布:矢量图下载 知乎 编辑:程序博客网 时间:2024/04/27 20:58

一个NSString对象可以存储一段Unicode字符。在cocoa中,所有和字符、字符串相关的处理都是使用NSString来完成。值得一提的是,NSString继承自NSObject,而字符串取下标(Index)和其它类型的数组一样从0开始。NSString所指向的字符串往往是字符串常量,是不可变的。通过NSString对字符串进行的修改通常是生成新的字符串常量替换旧的,并不是在原有字符串上进行修改。NSMutableString类用来创建可以更改字符串的字符串对象,因为是NSString的子类,所以可以使用NSString类的所有方法。

<span style="font-size: 18px;">1.创建一个空字符串 </span><span style="font-size:18px;">NSString * str = [[NSString alloc] init]; NSString * str = [NSString string];   //数组和字典也可以使用这种方式</span>
<span style="font-size: 14px; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"><span style="font-family:Arial;"> </span></span><span style="font-size:18px;"><span style="font-family:Arial;"><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);">//快速创建一个字符串常量</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string1 = @"abc";</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string2 = @"cde";</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSLog(@"%@ %@",string1,string2);</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> //创建一个格式化的字符串 (内存在堆区)</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string3 = [[NSString alloc]initWithFormat:@"整数: %d",10];</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string4 = [[NSString alloc]initWithFormat:@"浮点数: %f",10.0];</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSLog(@"%@ %@",string3,string4);</span></span><span style="font-family:SimHei;"></span></span><span style="font-family: Arial; font-size: 18px;"> </span><span style="font-size:18px;font-family: Arial;">2.快速创建一个字符串 NSString * str = [[NSString alloc] initWithString:dStr]; //dStr是字符串对象NSString * str = [NSString stringWithString:@"Hello!",];  3.创建一个格式化字符串 NSString * str = [[NSString alloc] initWithFormat:@"%d",520]; NSString * str = [NSString stringWithFormat:@"%.2f",3.1415926];         4.用标准c创建字符串char *Cstr ="今天很悲剧!";   //取字符串的地址NSString *str = [[NSString alloc] initWithCString:Cstr];     NSLog(@"str:%@",str);  [str release];   5.从设备上输入字符串 charbuffer[1000];   //使用一个缓冲区    NSLog(@"请输入字符串:");    scanf("%s",buffer);     NSString *str = [NSString stringWithUTF8String:buffer];  //将缓冲区赋给NSString变量    NSLog(@"字符串str = %@",str);  6.转换为基本数据类型 NSString *str = @"5"; float f1 = [str floatValue];    NSLog(@"str = %.2f",f1);  7.拼接字符串    //方式1NSString *appStr = [str1 stringByAppendingString:str2];    //方式2NSString *appStr = [str1 stringByAppendingFormat: @"%@",str2];     //方式3NSString *appStr = [[NSString alloc] initWithFormat: @"%@%@",str1,str2];                  8.查找字符串 NSString *str = @"abcdefghijklmn"; NSString *str1 = @"ijk";NSRange range = [str rangeOfString:str1];    NSLog(@"%@",NSStringFromRange(range));    NSLog(@"%d",range.location);   NSLog(@"%d",range.length);    if(range.location != NSNotFound) {        NSLog(@"str found");    }else{        NSLog(@"str not found");    }                                   9. //1字符串拆分为数组 NSString *str = @"1,2,3,4,5,6,7"; NSArray *array = [str componentsSeparatedByString:@","];     for(int i= 0;i < [array count];i++){       NSLog(@"array[%d] = %@",i,array[i]);     }   //2从数组合并元素到字符串NSArray *array = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",nil];NSString *str = [array componentsJoinedByString:@","];    NSLog(@"string:%@",str); 10.比较字符串 Objective-C中,NSString的==操作符比较的是字符串地址,不是字符串内容,如果需要比较内容则需要使用其它的方法。   //1 isEqualToString   if ([str1 isEqualToString:str2]) {        NSLog(@"str1 is EqualToString str2");    }else{        NSLog(@"str1 is not EqualToString str2");    }        //2 strcmp函数char str1[] = "string!"; char str2[] = "string!";  if(strcmp(str1, str2) == 0) {          NSLog(@"1");     }    //3compare方法(comparer返回三种值)      NSString *str1 =@"string!";  NSString *str2 =@"string!";      BOOL isOk = [str1 compare:str2] ==NSOrderedSame;         NSLog(@"isOk:%d",isOk);         //NSOrderedSame判断两者内容是否相同     //NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,str2大于str1为真)    //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,str2小于str1为真)   //4不考虑大小写比较字符串NSString *str1 =@"string!";  NSString *str2 =@"string!";      BOOL isOk = [str1 caseInsensitiveCompare:str2] ==NSOrderedSame;      NSLog(@"isOk:%d",isOk);    BOOL isOk = [str1 compare:str2 options:NSCaseInsensitiveSearch |NSNumericSearch] == NSOrderedSame;     NSLog(@"isOk:%d",isOk);      //NSCaseInsensitiveSearch:不区分大小写比较   //NSLiteralSearch:进行完全比较,区分大小写    //NSNumericSearch:比较字符串的字符个数,而不是字符值。  11.改变字符串的大小写NSString *str1 =@"string!";  NSString *str2 =@"string!";    NSString *str3 =@"string!";      NSLog(@"str1:%@",[str1 uppercaseString]);      NSLog(@"str2:%@",[str2 lowercaseString]);      NSLog(@"str3:%@",[str3 capitalizedString]);      //uppercaseString返回转换为大写的字符串   //lowercaseString返回转换为小写的字符串   //capitalizedString返回每个单词首字母大写的字符串 12.截取子串NSString *str =@"string!";  NSString *str1 = [str substringToIndex:3];   //截取strNSString *str2 = [str substringFromIndex:3]; //截取ing!NSString *str3 = [str substringWithRange:NSMakeRange(0, 4)]; //截取stri   //-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符   //-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符   //-substringWithRange: 按照所给出的位置,长度,任意地从字符串中截取子串  13.遍历      NSString *str = @"abcd ef g h";    NSMutableString *mStr = [str mutableCopy];    NSMutableArray *marr = [[NSMutableArray alloc] init];    for (int i = 0; i < [mStr length]; i++) {        NSString *subStr = [mStr substringWithRange:NSMakeRange(i, 1)];        if(![subStr isEqualToString:@" "]){            [marr addObject:subStr];        }    }        NSInteger lenthStr = [marr count];----------------NSMutableString部分----------------   NSMutableString类可以用来创建可以更改字符的字符串对象。因为该类是NSString类的子类,所以可以使用NSString类的所有方法。 1.NSMutableString生成:NSMutableString *mStr1 =[NSMutableString string];NSMutableString *mStr2 = [NSMutableString stringWithString:@"明天会更好!"];NSMutableString *mStr3 = [[NSMutableString alloc] initWithFormat:@"%@",@"面包会有的!"]; 2.给字符串分配容量 NSMutableString*mStr;    mStr =[NSMutableString stringWithCapacity:40]; //初始化容量为40字节,可增加;3.添加元素:NSMutableString *mStrBaby = [NSMutableString string];    [mStrBaby appendString:@"熊"];    [mStrBaby appendFormat:[NSString stringWithFormat:@"猫"]];4.插入内容:NSString *str = @"乖宝宝";    [mStrBaby insertString:str atIndex:2];  //Index:i,从下标为i的元素开始后移,让出空位;    [mStrBaby insertString:@"!" atIndex:[mStr length]]; //  在可变字符串的最后插入 5.替换内容:   // 用于NSMutableString[mStrBaby replaceCharactersInRange:NSMakeRange(2,3) withString:@"不乖了"];    //在给定的范围内查找并替换,   //在第四个参数范围内,查找第一个参数,若有找到用第二个参数替换第一个参数,第三个参数暂时我还不会用;-(NSUInteger)replaceOccurrencesOfString:(NSString*)target withString:(NSString*)replacement options:(NSStringCompareOptions)opts range:(NSRange)searchRange; 6.删除内容:[mStrBaby deleteCharactersInRange:NSMakeRange(2,3)];     //删除指定范围(location=2,length=3)的字符串7.将已有的字符串换成其它的字符串     [mStrBaby setString:@"功夫熊猫!"]; 8.查找(返回字符串范围)NSRange subRange = [mStrBaby rangeOfString:@"猫"];    //查找字符串中是否包含“猫”,返回NSRange类型。   //如果没查找到,则(subRange.location== NSNotFound)为真。   if(subRange.location == NSNotFound){       NSLog(@"String not found ");   }else {       NSLog(@"string is at index %i, length is %i", subRange.location,subRange.length);    } 9.判断字符串内是否还包含别的字符串(前缀,后缀)NSString *str = @"NSStringInformation.txt";   //检查字符串是否以另一个字符串开头或结尾;    [str hasPrefix:@"NSString"] == 1 ? NSLog(@"YES") :NSLog(@"NO"); //是否有前缀 NSString;    [str hasSuffix:@".txt"] == 1 ? NSLog(@"YES") :NSLog(@"NO");    //是否有后缀 .txt;</span><span style="font-family: Arial; font-size: 18px;"></span>


0 0