文字ごとに調べる必要がある NSString があります。
examine char
perform calculation
loop (until string ends)
これを行う最善の方法について何か考えはありますか?NSString を NSArray または C 文字列に変換する必要がありますか?
文字ごとに調べる必要がある NSString があります。
examine char
perform calculation
loop (until string ends)
これを行う最善の方法について何か考えはありますか?NSString を NSArray または C 文字列に変換する必要がありますか?
それを実行する最も簡単な方法は、NSString
のメソッドを使用することです。 characterAtIndex:
int charIndex;
for (charIndex = 0; charIndex < [myString length]; charIndex++)
{
unichar testChar = [myString characterAtIndex:charIndex];
//... your code here
}
-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 )
。