objective-c - Objective-C中如何将NSString转成带有字符的NSArray

标签 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/

相关文章:

iphone - ios coredata 错误找不到源存储的模型

objective-c - Cocoa路径字符串转换

iOS 地址簿链接帐户记录不显示在排序的副本中

objective-c - 从 Swift 测试文件调用 Objective-C 类

iphone - obj c uiwebview 响应式 html

ios - 如何在其蒙版周围绘制 CALayer 边框?

iphone - 是否有用于 iPhone 的 Miles/KM 互换性的内置机制?

objective-c - 删除 NSStatusItem View

ios - 独立渲染到多采样缓冲区和解析帧缓冲区

ios - UIView、Swift 上的深度页面转换