Objective C NSString问题

时间:2009-06-15 16:32:47

标签: objective-c nsstring

我有一个NSString,我需要逐个字符地检查:

 examine char
    perform calculation
 loop (until string ends)

有关最佳方法的任何想法吗?我需要转换NSString吗? 到NSArray或C字符串?

2 个答案:

答案 0 :(得分:6)

最简单的方法是使用NSString的{​​{3}}方法:

int charIndex;
for (charIndex = 0; charIndex < [myString length]; charIndex++)
{
    unichar testChar = [myString characterAtIndex:charIndex];
    //... your code here
}

答案 1 :(得分:4)

-characterAtIndex:最简单的方法,但最好是下拉到CFString并使用CFStringInlineBuffer,就像在这个方法中一样:

- (NSIndexSet *) indicesOfCharactersInSet: (NSCharacterSet *) charset
{
    if ( self.length == 0 )
    return ( nil );

    NSMutableIndexSet * set = [NSMutableIndexSet indexSet];

    CFIndex i = 0;
    UniChar character = 0;
    CFStringInlineBuffer buf;
    CFStringInitInlineBuffer( (CFStringRef)self, &buf, CFRangeMake(0, self.length) );

    while ( (character = CFStringGetCharacterFromInlineBuffer(&buf, i)) != 0 )
    {
        if ( [charset characterIsMember: character] )
            [set addIndex: i];

        i++;
    }

    return ( set );
}

这样更好,因为它会同时抓取多个字符,并根据需要获取更多字符。它实际上是ObjC 2中for ( id x in y )的字符串字符版本。