字符串其实就是一组人类可读的字符序列。
-不要在使用过程中更换字符串对象的指向(内存地址)
NSString * str = [[NSString alloc]init];
str = @"hello";//造成内存泄漏
-以字符串创建字符串不需要人为内存管理,生命周期不可控
1、栈(操作系统):由操作系统自动分配释放;
2、堆(操作系统):一般由程序员分配释放。
NSString *str1 = [[NSString alloc]initWithString:@"Hello"];//在栈区
-格式化创建字符串
NSString * str2 = [[NSString alloc]initWithFormat:@"%@,%@",@"Hello",@"World"];
NSLog(@"%@",str2);
NSString* string = [NSString stringWithFormat:@"my name is %@!",@"5"];
-字符串比较
NSString * str5 = @"Hello";
NSString * str6 = @"World";
//字符串比较切记不要直接使用对象进行比较//str5 == str6;
[str5 isEqualToString:str6];//比较是否相等
1、isEqualToString放回一个BOOL值(YES或NO)来表示两个字符串是否相等
2、compare:放回一个NSComparisonResult来显示比较结果
enum{
NSOrderedAscending= -1,
NSOrderedSame,
NSOrderedDescending
};
typedefNSIntegerNSComparisonResult;
例子如下
NSLog(@"%ld",[str5 compare:str6]);
3、compare:<#(nonnull NSString *)#> options:<#(NSStringCompareOptions)#> 此方法中 options参数中有以下几种常见选项:
NSCaseInsensitiveSearch//不区分大小写字符比较
NSLiteralSearch//进行完全比较,区分大小写
NSNumericSearch//比较字符串字符的个数,而不是字符串值
例如
[str6 compare:str5 options:NSNumericSearch];
-判断一个字符串是否以某个字符串开头或结尾
[string1 hasPrefix:@"H"];
[string1 hasSuffix:@"zip"];
-字符串拼接
NSString * string3 = [string2 stringByAppendingString:string1];
NSLog(@"%@",string3);
-字符串查找
NSString* string =@"张三";
NSRange range = [string rangeOfString:@"张"];
NSLog(@"%ld,%ld",range.length,range.location);
NSString* string2 = [string stringByReplacingCharactersInRange:range withString:@"h"];
NSLog(@"%@",string2);
-根据范围获得字符串
NSString * string =@"Hello,World";
[string characterAtIndex:0];
NSLog(@"%c",[string characterAtIndex:0]);
-从字符串开头截取到指定未指定的字符串(不包括该位置的字符)
NSLog(@"%@",[string substringFromIndex:3]);
-从指定位置开始截取到指定位置的字符串
NSLog(@"%@",[string substringWithRange:<#(NSRange)#>]);
-从指定位置开始截取
NSLog(@"%@",[string substringFromIndex:1]);
-在程序运行时,字符串通常以UTF-8的转码格式表现