NSString
NSString是Foundation框架中一个用来存储和操作字符串的类。
创建方式
NSString *str1 = [NSString new];
NSString *str2 = [[NSString alloc]init];
NSString *str3 = [NSString string];
NSString *str4 = @"String";
NSString常用属性及方法
字符串长度
@property (readonly) NSUInteger length;
- 只读,获取字符串的长度。
- 用法:
str1.length;
字符串转数字类型
@property (readonly) double doubleValue;
@property (readonly) float floatValue;
@property (readonly) int intValue;
- 只读,获取字符串转数字类型。
- 用法:
str1.doubleValue; str1.floatValue; str1.intValue;
字符串大小写转换
@property (readonly, copy) NSString *uppercaseString;
@property (readonly, copy) NSString *lowercaseString;
@property (readonly, copy) NSString *capitalizedString;
- 只读,转换字符串的大小写。
- 用法:
str1.uppercaseString; //大写 str1.lowercaseString; //小写 str1.capitalizedString; //首字母大写
获取对应下标的字符
- (unichar)characterAtIndex:(NSUInteger)index;
- 根据下标获取字符串中对应位置的字符。
- 用法:
[str1 characterAtIndex:2]; //获取字符串str1下标为2的字符
字符串截取
- (NSString *)substringFromIndex:(NSUInteger)from;
- 根据下标获取从下标到字符串末尾的子字符串。
- 用法:
[str1 substringFromIndex:2]; //截取从下标为2到字符串末尾的子字符串
- (NSString *)substringToIndex:(NSUInteger)to;
- 根据下标获取从下标到字符串末尾的子字符串。
- 用法:
[str1 substringToIndex:2]; //截取从字符串开头到下标为2的子字符串
- (NSString *)substringWithRange:(NSRange)range;
- 根据NSRange获取子字符串。
- 用法:
NSRange range = NSMakeRange(1,2); [str1 substringWithRange:range]; //截取从下标为 1 开始的两位字符串
字符串比较
- (BOOL)isEqualToString:(NSString *)aString;
- 比较两个字符串的值是否相同。
- 用法:
[str1 isEqualToString:str2]; //比较 str1 与 str2 的值是否相同
- (NSComparisonResult)compare:(NSString *)string;
- 根据字符串的ASKII码比较两个字符串的值的大小。
- 用法:
[str1 compare:str2]; //比较 str1 和 str2 的大小,str1 大返回 1 ,str2 大返回 -1 ,一样大返回0
前后缀判断
- (BOOL)hasPrefix:(NSString *)str;
- 判断是否有指定前缀。
- 用法:
[str1 hasPrefix:@"str"]; //判断 str1 是否有内容为"str"的前缀
- (BOOL)hasSuffix:(NSString *)str;
- 判断是否有指定后缀。
- 用法:
[str1 hasSuffix:@"str"]; //判断 str1 是否有内容为"str"的后缀
C语言字符串转换为NSString
+ (instancetype)stringWithUTF8String:(NSString *)string;
- 将C语言类型的字符串转换为NSString。
- 用法:
char a[10] = "str"; NSString *str = [NSString stringWithUTF8String:a];
拼接创建字符串
+ (instancetype)stringWithFormat:(NSString *)format, ...
- 将字符串按需要拼接。
- 用法:
NSString *str1 = @"AAA"; NSString *str2 = @"BBB"; NSString *str = [NSString stringWithFormat:@"%@strstr%@",str1,str2]; // str 为 "AAAstrstrBBB"
字符串转NSArray
- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
- 将字符串以指定字符串分割并返回一个数组。
- 用法:
NSArray *array = [str componentsSeparatedByString:@","] //把字符串 str 根据 "," 分割并返回一个字符串
其他
%p:打印指针变量的值即地址。%@: 打印指针指向的对象。- 用
==比较字符串仅仅比较的是地址是否相同,比较字符串的值是否相同需要使用isEqualToString进行比较。
NSMutableString
NSMutableString是Foundation框架中的可变字符串类,与NSString不同的是,NSMutableString被修改时不会像NSString重新创建一个对象并修改指针,而是修改字符串时,直接修改对象的内容。NSMutableString继承自NSString,并对NSString进行了扩展,同样用来存储字符串。
创建方式
NSMutableString *str1 = [[NSMutableString alloc]init];
NSMutableString *str2 = [NSMutableString string];
NSMutableString不能像NSString一样直接使用赋值。
NSMutableString常用方法
NSMutableString转NSString
+ (instancetype)stringWithString:(NSString *)string;
- 将
NSMutableString转换为NSString。 - 用法:
NSString *str2 = [NSMutableString stringWithString:str1];
追加字符串
- (void)appendString:(NSString *)aString;
- 在字符串后追加字符串。
- 用法:
[str1 appendString:@"str"];
- (void)appendFormat:(NSString *)format, ... ;
- 在字符串后追加一个拼接的字符串。
- 用法:
[str1 appendFormat:@"str%@",str2];
NSMutableString的使用场景
当需要大量拼接字符串的时候,需要使用NSMutablString,保证每次拼接都是操作一个对象,不会重复创建多个对象,效率较高。