Задача C NSString задача - PullRequest
       13

Задача C NSString задача

2 голосов
/ 15 июня 2009

У меня есть NSString, который мне нужен, чтобы проверить символ за символом и:

 examine char
    perform calculation
 loop (until string ends)

Есть мысли о том, как это сделать? Нужно ли конвертировать NSString в строку NSArray или C?

Ответы [ 2 ]

6 голосов
/ 15 июня 2009

Самый простой способ сделать это - использовать метод NSString characterAtIndex::

int charIndex;
for (charIndex = 0; charIndex < [myString length]; charIndex++)
{
    unichar testChar = [myString characterAtIndex:charIndex];
    //... your code here
}
4 голосов
/ 16 июня 2009

-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 );
}

Это лучше, потому что он будет захватывать несколько символов одновременно, выбирая больше по мере необходимости. Фактически это строковая версия for ( id x in y ) в ObjC 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...