2

文字ごとに調べる必要がある NSString があります。

 examine char
    perform calculation
 loop (until string ends)

これを行う最善の方法について何か考えはありますか?NSString を NSArray または C 文字列に変換する必要がありますか?

4

2 に答える 2

6

それを実行する最も簡単な方法は、NSStringのメソッドを使用することです。 characterAtIndex:

int charIndex;
for (charIndex = 0; charIndex < [myString length]; charIndex++)
{
    unichar testChar = [myString characterAtIndex:charIndex];
    //... your code here
}
于 2009-06-15T16:43:03.717 に答える
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 );
}

これは、一度に多数の文字を取得し、必要に応じてさらにフェッチするため、より優れています。これは事実上、ObjC2の文字列文字バージョンですfor ( id x in y )

于 2009-06-15T22:33:26.477 に答える