【问题标题】:how to add each character of a NSString into a NSArray?如何将 NSString 的每个字符添加到 NSArray 中?
【发布时间】:2011-06-19 04:32:08
【问题描述】:

我正在寻找一种传递 NSString 的方法,它包含 4 个字符,它们总体上代表一个 4 位数字,例如 0741,我一直在环顾四周并不断遇到这个函数

myArray = [dataString componentsSeparatedByString:@"\r\n"];

componentsSeparatedByString... 如果我的组件没有分开,我该怎么办?

好吧,在查看下面发布的链接后,我找到了 NSRange,并设法让它与下面的这个解决方案完美配合,但是它感觉有点拉长,而且可能比它需要的更笨重......让我知道您的想法以及我可以做出哪些改进。

NSRange MyOneRange = {0, 1};
    NSRange MyTwoRange = {1, 1};
    NSRange MyThreeRange = {2, 1};
    NSRange MyFourRange = {3, 1};

    NSString *firstCharacter = [[NSString alloc] init];
    NSString *secondCharacter = [[NSString alloc] init];
    NSString *thridCharacter = [[NSString alloc] init];
    NSString *fourthCharacter = [[NSString alloc] init];

    firstCharacter = [myFormattedString substringWithRange:MyOneRange];
    secondCharacter = [myFormattedString substringWithRange:MyTwoRange];
    thridCharacter = [myFormattedString substringWithRange:MyThreeRange];
    fourthCharacter = [myFormattedString substringWithRange:MyFourRange];


    NSLog(@"%@, %@, %@, %@", firstCharacter, secondCharacter, thridCharacter, fourthCharacter);

【问题讨论】:

    标签: iphone ios nsstring components nsarray


    【解决方案1】:

    即兴发挥你的方法,

    NSRange theRange = {0, 1};
    NSMutableArray * array = [NSMutableArray array];
    for ( NSInteger i = 0; i < [myFormattedString length]; i++) {
        theRange.location = i;
        [array addObject:[myFormattedString substringWithRange:theRange]];
    }
    

    【讨论】:

    • +1...但你有一个错字。 NSString 没有计数方法...我猜你的意思是长度
    • @deepak 你能解释一下字符串中的流程吗?
    【解决方案2】:

    您有很多选择...首先是- (unichar)characterAtIndex 方法。我建议阅读 NSString 文档(有一部分方法称为“获取字符和字节”)。

    【讨论】:

    • 感谢这个链接很有帮助,是我目前解决问题的方法。
    【解决方案3】:

    这样的东西应该很好用:

    NSString *dataString = @"0741";
    NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[dataString length]];
    for (int i = 0; i < [dataString length]; i++) {
        NSString *singleCharacter  = [NSString stringWithFormat:@"%c", [dataString characterAtIndex:i]];
        [characters addObject:singleCharacter];
    }
    

    【讨论】:

    • 问题:-characterAtIndex: 返回的数据类型的大小对于格式说明符"%c" 是错误的。 -characterAtIndex: 返回 unichar(实际上是一个宽字符,如 wchar_t),而不是 char。请参阅 @Deepak 使用 -substringWithRange: 的方法,它始终使用 NSString 抽象,而不是依赖于底层字符表示。
    • 有了这个我可以改变'NSString *singleCharacter = [NSString stringWithFormat:@"%c", [dataString characterAtIndex:i]];'将 characterAtIndex:i 转换为整数?
    • 是的,我会推荐@Deepak 的方法,因为它更容易阅读(一旦理解了 NSRange 的巧妙技巧):)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多