/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.字符串比较,调用C的strcmp函数,s1>s2返回值>0
,s1=s2 返回值=0 , s1<s2
返回值<0
char * str1 ="string";
char * str2 ="strjng";
printf("%d",strcmp(str1, str2));
//2.NSString的compare方法,类似于C的strcmp函数,s1>s2返回值>0,
s1=s2 返回值=0, s1<s2
返回值<0
NSString * str1 =@"string";
NSString * str2 =@"sting";
NSLog(@"%d",[str1compare:str2]);
//3.NSString的compare方法,忽略大小写比较
NSString * str1 =@"string";
NSString * str2 =@"String";
NSLog(@"%d",[str1caseInsensitiveCompare:str2]);
//4.NSString的compare方法,忽略大小写比较长度,用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]);