質問

単一のランダムな大文字を持つNSStringを作成する必要があります。

ランダムなint値を得ることができ、それからC文字列を構築し、NSStringを作成できますが、より良く、よりココア風の方法が必要だと思います。

ありがとう!

役に立ちましたか?

解決

文字と思われるものを含むNSStringを作成し、そこからランダムな文字を引き出すことができます。カテゴリの例を次に示します。

@implementation NSString(RandomLetter)
- (NSString *)randomLetter {
    return [self substringWithRange:[self rangeOfComposedCharacterSequenceAtIndex:random()%[self length]]];
}
@end

(ある時点で srandom(time())が必要なことは明らかです。カテゴリにinitializeメソッドを含めることもできます。)

他のヒント

最良の方法は、明示的なエンコードを使用できるようにc文字列を使用することです。その例を次に示します。

NSInteger MyRandomIntegerBetween(NSInteger min, NSInteger max) {
    return (random() % (max - min + 1)) + min;
}

NSString *MyStringWithRandomUppercaseLetter(void) {
    char string[2] = {0, 0};
    string[0] = MyRandomIntegerBetween(65, 90); /// 'A' -> 'Z' in ASCII.
    return [[[NSString alloc] initWithCString:string encoding:NSASCIIStringEncoding] autorelease];
}

これは代替案です。これは実際にはほぼ同じですが、C文字列を避けています。

NSString *MyStringWithRandomUppercaseLetter(void) {
    unichar letter = MyRandomIntegerBetween(65, 90);
    return [[[NSString alloc] initWithCharacters:&letter length:1] autorelease];
}

最初のアプローチでは明示的な文字エンコーディングを好みますが、どちらも正しいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top