<分区>
我想将 NSString(ex. @"HELLO")
转换为 NSArray(ex. [@"H", @"E", @"L", @ "L", @"O", nil])
.
首先,我尝试使用 componentsSeparatedByString
。但它需要指示分隔符,所以我不能。
我该怎么做?
标签 objective-c
<分区>
我想将 NSString(ex. @"HELLO")
转换为 NSArray(ex. [@"H", @"E", @"L", @ "L", @"O", nil])
.
首先,我尝试使用 componentsSeparatedByString
。但它需要指示分隔符,所以我不能。
我该怎么做?
最佳答案
将字符串拆分为数组的正确方法是执行以下操作(作为 NSString
类别方法):
@interface NSString (ConvertToArray)
-(NSArray *)convertToArray;
@end
@implementation NSString (ConvertToArray)
- (NSArray *)convertToArray {
NSMutableArray *arr = [[NSMutableArray alloc] init];
NSUInteger i = 0;
while (i < self.length) {
NSRange range = [self rangeOfComposedCharacterSequenceAtIndex:i];
NSString *chStr = [self substringWithRange:range];
[arr addObject:chStr];
i += range.length;
}
return arr;
}
@end
NSArray *array = [@"Hello 😄" convertToArray];
NSLog(@"array = %@", array);
如果字符串包含 \U10000
或更高版本的 Unicode 字符,则将范围长度硬编码为 1 的解决方案将失败。这包括表情符号字符以及许多其他字符。
关于objective-c - Objective-C中如何将NSString转成带有字符的NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890823/