字符串
这一篇的大部分内容是从LuisX的博客精简而来,欲详细学习可以前往他的博客。
不可变字符串 NSString
创建方法
字面量方法:
NSString *str = @"string";
格式化方法:
NSString *str1 = [NSString stringWithFormat:@"%@",str];
复制方法(不同于copy):
NSString *str2 = [[NSString alloc]initWithString:str];
属性查询方法
名称 | 属性 |
---|---|
长度 | length |
描述 | description |
哈希地址 | hash |
以上属性可以通过get方法获取,亦可发送消息获取。
int length = [str length];
length = str.length;
通过索引获取字符:
unichar ch = [str characterAtIndex:0];
字符串操作
比较字符串大小:
NSComparisonResult result = [str1 compare:str2];
比较过程是从左向右遍历字符串的字符,当字符出现差异时,拥有较大字符的字符串为大,不再向后比较,亦或是当某个字符串遍历结束,尚未结束的字符串为大。
返回值是一个枚举类型
- NSOrderedAscending(-1)代表str1小于str2。
- NSOrderedSame(0)代表str1等于str2。
- NSOrderedDescending(1)代表str1大于str2。
比较条件:
比较时亦可添加条件 列举几个常用
- NSLiteralSearch(默认)区分大小写
- NSCaseInsensitiveSearch 不区分大小写
- NSNumericSearch 比较长度 (它是在比较值的基础上比较长度,就不知道有什么意义。。)
可以同时添加多个条件,也可设定范围。
[str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
[str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch range:(NSRange){2, 1}];
字符串截取:
//截取指定位置之后的字符串
- (NSString *)substringFromIndex:(NSUInteger)from;
//从0下标开始截取到指定位置的字符串
- (NSString *)substringToIndex:(NSUInteger)to;
//截取指定范围的字符串
- (NSString *)substringWithRange:(NSRange)range;
//截取字符串指定范围的字符
- (void)getCharacters:(unichar *)buffer range:(NSRange)range;
字符串拼接:
NSString *string = @"1";
NSString *appStr = @"2";
//通过字符串拼接
NSString *resultStr1 = [string stringByAppendingString:appStr];
//格式化拼接
NSString *resultStr2 = [string stringByAppendingFormat:@" + %@", appStr];
其他get方法获取的值
//基本类型转换
NSLog(@"double型: %f", numStr.doubleValue);
NSLog(@"float型: %f", numStr.floatValue);
NSLog(@"int型: %d", numStr.intValue);
NSLog(@"NSInteger型: %ld", numStr.integerValue);
NSLog(@"long long型: %lld", numStr.longLongValue);
NSLog(@"BOOL型: %d", numStr.boolValue);
//大小写转换
NSLog(@"大写: %@", string.uppercaseString);
NSLog(@"小写: %@", string.lowercaseString);
NSLog(@"首字母大写: %@", string.capitalizedString);
可变字符串 NSMutableString
NSString的子类,区别在于可以初始化后可以修改原来的字符串。
初始化方法
//实例方法
NSMutableString *mutableStr1 = [[NSMutableString alloc] initWithCapacity:20];
//类方法
NSMutableString *mutableStr2 = [NSMutableString stringWithCapacity:20];
修改方法
NSMutableString *str = [NSMutableString stringWithString:@"string"];
//插入
[str insertString:@"123" atIndex:2];
NSLog(@"%@", str);
//输出: st123ring
//删除
[str deleteCharactersInRange:NSMakeRange(2, 2)];
NSLog(@"%@", str);
//输出: st3ring
//拼接
[str appendString:@"456"];
NSLog(@"%@", str);
//输出: st3ring456
//格式化拼接
[str appendFormat:@"7 89"];
NSLog(@"%@", str);
//输出: st3ring4567 89
//设置新字符串
[str setString:@"string"];
NSLog(@"%@", str);
//输出: string
//字符串替换
//1.指定范围替换
[str1 replaceCharactersInRange:NSMakeRange(2, 2) withString:@"123"];
NSLog(@"%@", str1);
//输出: st123ng
//2.指定字符串,条件,范围替换
[str1 replaceOccurrencesOfString:@"123" withString:@"--" options:NSRegularExpressionSearch range:NSMakeRange(0, str1.length)];
NSLog(@"%@", str1);
//输出: st--ng