2

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

ランダムな int をうまく取得でき、それから C 文字列を作成して NSString を作成することもできますが、より優れた、よりココアっぽい方法が必要だと思います。

ありがとう!

4

2 に答える 2

6

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

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

srandom(time())(明らかに、ある時点で必要になるでしょう。おそらく、カテゴリに初期化メソッドを含める必要があります。)

于 2009-06-23T23:41:01.817 に答える
4

明示的なエンコーディングを使用できるように、AC文字列を使用するのが最善の方法だと思います。その例を次に示します。

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

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

于 2009-06-24T00:17:05.613 に答える