NSString的恒定性
1.使用NSString类方法创建的对象是存储在内存的堆区域
如:NSString* str=[NSStringstringWithFormat:@"jack"];
使用一个OC字符串常量去初始化一个NSString指针,这个OC字符串常量是存储在内存的常量区
如:NSString* str=@"jack";
2.一旦字符串对象在内存中创建,那么这个字符串对象存在恒定性。
即字符串对象在内存中创建(无论是堆还是常量区),这个字符串对象的内容都无法修改
3.当要在常量区创建对象的时候,并不是直接创建
而是在常量区搜索是否有一样的对象,如果有,直接指向,如果没有,才会重新创建
同样,当要在堆区创建对象的时候,也不会直接创建,
而是在堆区搜索是否有一样的对象,如果有,直接指向,如果没有,才会重新创建
注意:在堆区创建的时候不会去常量区搜索,在常量区创建的时候也不会去堆区搜索
4.就算没有一个强指针指向,创建在常量区的对象不会被回收,
NSString和NSMutableString常用方法的使用:
注意:NSString是NSMutableString的父类,所以NSMutableString可以使用NSString的所有方法,反之则不可以
- NSString *str =@"我叫ios";//快速初始化(特殊用法)
char *ch ="我叫ios";
- NSString *str0 = [NSStringstringWithFormat:@"%@,%d岁",str,21];//格式化字符串
- NSString *str1 = [NSStringstringWithUTF8String:ch];//C字符串转化为UTF8编码
- NSString *str2 = [NSStringstringWithString:str];//通过浅拷贝,只拷贝指针不拷贝对象,str2与str的地址相同,内容也 是相同的
- NSString *str3 = [strstringByAppendingString:@",你是谁呀?"];//字符串拼接加长
- (字符串截取)
NSString *str4 = [str substringFromIndex:1];//从第几位开始截到最后
NSString *str5 = [@"不骄不傲"substringFromIndex:1];
NSString *str6 = [strsubstringToIndex:3];//从开始位置截到第几位
NSString *str7 = [[strsubstringFromIndex: 3]substringToIndex:2];//从第几位开始截几个字符
NSString *str8 = [strsubstringWithRange:NSMakeRange(2, 3)];//str对象中,从第二个位置,开始截取3个字符
unichar c= [strcharacterAtIndex:2]; //截取对应位置的字符
NSLog(@"%C",c);
- (分解)
NSArray *str9= [@"asd|tes|mmm" componentsSeparatedByString:@"|"];//通过制定字
符分割字符串
- (查找)
NSRange range = [@"12rasd124"rangeOfString:@"asd"];//第二个字符串在第一个字符串
if (range.location !=NSNotFound) //如果可以找到
{
NSString *str10 = [@"12rasd124"substringWithRange:range];
}
- (替换)
NSString *str11 = [@"小明学ios"stringByReplacingOccurrencesOfString:@"ios"
withString:@"JS" ];
- (比较大小和相同)
NSUInteger str12 = str.length; //不管str是不是nil都可以这么判断
(比较字符串大小)
NSString *stra =@"asd";
NSString *strb =@"dfs";
NSComparisonResult result = [stra compare:strb];
比较字符串(是否一样)
if ([@"asd" isEqualToString:@"asd"]) {}
- (路径相关)
路径相关(暂时不管)
//filepath 是文件路径(文件)
[filepath lastPathComponent]; //获得文件名
[filepath pathExtension]; //获得文件扩展名
[filtpaht stringByDeletingLastPathComponent]; //获得文件的所在文件夹路径
[filtpath stringByDeletingPathExtension]; //获得去除扩展名的文件路径
- (访问网页)
//使用一个字符串保存一个网址的路径
NSString *path =@"http://www.itcast.cn/";
//通过URLWithString将路径字符串设置给NSURL对象
NSURL *u = [NSURLURLWithString:path];
NSString *str=[NSStringstringWithContentsOfURL:uencoding:NSUTF8StringEncoding
error:nil];
NSLog(@"%@",str);
- (文件写入与读取)
[str writeToFile:@"/Users/nevergiveup/Desktop/123.doc" atomically:NO encoding:NSUTF8StringEncoding error:&err];
NSString *str3 = [NSString stringWithContentsOfFile:@"/Users/nevergivep/Desktop/123.doc" encoding:NSUTF8StringEncoding error:&err];
[err localizedDescription]//调用这个方法可以打印错误信息
- (字符串匹配)
NSString *String1 =@"NSStringInformation.txt";
[String1 hasPrefix:@"NSString"] == 1 ? NSLog(@"YES") :NSLog(@"NO");
[String1 hasSuffix:@".txt"] == 1 ? NSLog(@"YES") :NSLog(@"NO");
- NSString *str=@"JackLoveRose";
NSLog(@"%@",[strlowercaseString]);//转成小写
NSLog(@"%@",[struppercaseString]);//转成大写
- //将OC类型的字符串转换为c类型的字符串
NSString *str=@"rosafdsfe";
char *s=[str UTF8String];
- //去除字符串前后的空格
NSString *name=@" j a c k ";
NSCharacterSet *set=[NSCharacterSet whitespaceCharacterSet];
name = [namestringByReplacingOccurrencesOfString:@" "withString:@""];
name = [name stringByTrimmingCharactersInSet:set];
- (可变string的拼接)
NSMutableString *mString = [NSMutableStringstringWithFormat:@"今天是是好日子!"];
NSMutableString *mString1 = [NSMutableStringstringWithFormat:@"好好学习!"];
[mString appendString:mString1];
[mString1 appendFormat:@"么么哒%d",12];
- NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小