一个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.拼接字符串
//方式1
NSString *appStr = [str1 stringByAppendingString:str2];
//方式2
NSString *appStr = [str1 stringByAppendingFormat: @"%@",str2];
//方式3
NSString *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]; //截取str
NSString *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>