一,不可变字符串(NSString);
1.直接赋值
NSString *string1=@"nihao";
2.先分配内存后赋值
NSString *string2=[[NSString alloc]init];
string2=@"nihao";
3.工厂方法制造对象
NSString *string3=[NSString stringWithFormat:@"nihao"];
/*
注意:
NSString *string4=[NSString stringWithFormat:@"%@,5,%f,hi guy",@"Rick",5.5];
这种后面是能接多个格式化标识符的,在拼接字符串时也能用这种方法
*/
4.使用initWithString 与initWithFormat 方法初始化
NSString *string4=[[NSString alloc]initWithString:@"nihao"];
NSString *string5=[[NSString alloc]initWithFormat:@"nihao"];
5.使用C语言生成NSString
NSString *string5=[[NSString alloc]initWithCString:"nihao" NSUTF8StringEncoding];
6.使用已有的字符串生成新的字符串
NSString *string6=[NSString stringWithString:string5];
可变字符串(NSString)的操作
1.本地文件与网络读取字符串
//从本地文件读取字符串(contentsofFile)
NSString *path1=@"/Users/ibokan/Desktop/001/OC_04_02/OC_04_02/aaa.html";
NSError *error;//判断是否错误
NSString *string8=[NSString stringWithContentsOfFile:path1 encoding:NSUTF8StringEncoding error:&error];
//NSUTF8StringEncoding = 4;
NSLog(@"string8=%@,error=%@",string8,error );
//从网络读取字符串(ContentsOfURL)
NSURL *nrl=[NSURL URLWithString:@"http://www.baidu.com"];
error=nil;//这样是不进行判断
NSString *string9 = [NSString stringWithContentsOfURL:nrl encoding:4 error:&error];
NSLog(@"%@",string9);
2.获取字符串的长度 与 字符串中某个字符
//字符串长度length
NSString *string@"你好";
NSUInteger length=[string10 length];//获取字符串长度,相当于string10.length
NSLog(@"%lu",(unsigned long)length);
运行结果是:2
//获取字符串中某个字符 (characterAtIndex)
NSString *string11=@"abcdefg";
char *c =[string11 characterAtIndex:0];
//根据字符串中的位置index来获得字符串,注意字符串的索引是从0开始
NSLog(@"%c",c);
3.字符串的比较
== 内容和指针都相等的情况下
isEqualTo 内容上相等
//通常与if语句结合
//-(NSComparisonResult)compare:(NSString *)aString options(NSStringCompareOptions)mask;
s1 compare : s2 这种比较区分大小写
s1 compare : s2 options:(条件) 这种比较可额外的加条件
//NSComparisonResult为枚举类型
//{NSOrderedAscending(左侧小于右侧),NSOrderedSame,NSOrderedDescending(左侧大于右侧)}
//NSStringCompareOptions也是枚举类型
//常用的是:NSCaseInsensitiveSearch(不区分大小写比较字符),NSLiteralSearch(完全比较,区分大小写),NSNumericSearch(比较字符个数)
4.字符串拼接
-(NSString *)stringByAppendingString:(NSString *)aString
例子:
NSString *string1=@"I Love";
NSString *string2=[string1 stringByAppendingString:@"Iphone";
这种事直接将两个字符串连接起来.
-(NSString *)stringByAppendingFormat:(NSString *)format...
例子:
NSString *string3=[string2 stringByAppendingFormat:@"%dS",5];
这种后面是按一定格式传进来的,可接多个,与stringWithFormat有点类似
5.字符串的查找与截取
查找:
-(BOOL)hasPrefix:(NSString *)string 判断字符串是否以string开头
-(BOOL)hasSuffix:(NSString *)string 判断字符串是否以string结尾
-(NSRange)rangeOfString:(NSString *)string 对字符串中间的查找
截取:
-(unichar)characterAtIndex:(NSUInteger)index 根据字符串的位置截取得到一个字符
-(NSString *)substringFromIndex:(NSUInteger)from: 从from的位置开始截取到结尾,包括from这个位置
-(NSString *)substringToIndex:(NSUInteger)to: 开头截取到to这个位置,不包括to这个位置
-(NSString *)substringWithRange:(NSRange)range: 根据某个范围截取
6.字符串的替换
-(NSString *)stringByReplaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
将target所有目标替换成replacement
-(NSString *)stringByReplaceCharactersInRange:(NSRange)range
将range范围内的内容替换
-(NSArray *)componentsSeparatedByString:(NSString *)separator
以separator为分隔符,将原字符串分割后放入数组中
7.大小写替换
-(NSString *)uppercaseString 将字符全改为大写
-(NSString *)lowercaseString 将字符全改为小写
-(NSString *)capitalizedcaseString 首个字符大写,其余小写
二,可变字符串(NSMutableString)
可变字符串是在原有的字符串中进行修改内容
其中,NSMutableString是NSString的子类,所以继承了NSString中一些属性
NSMutableString独有的初始化
-(id)stringWithCapacity:(unsigned long)capacity
例:
NSMUtableString *mStr=[NSMUtableString stringWithCapacity:40]
//后面40是初始化的长度,但并不局限于这个大小,字符串会根据内容而自行改变
NSMutableString对字符串内容修改
-(void)appendString:(NSString *)string 字符串末尾添加一个字符串
-(void)appendFormat:(NSString *)format 字符串末尾添加多个字符串
insertString:(NSString *)string atIndex 指定位置插入字符串
-(void)deleteCharacsInRange:(NSRange)range 删除range范围内的字符