Objective-CでNSStringの大文字と小文字を区別または変更する


140

のオブジェクトで見つかった文字列を大文字にする方法を知りたいと思っていましたNSMutableArray

NSArrayは、'April'インデックス2 の文字列が含まれています。
これをに変更し'APRIL'ます。

このような簡単なものはありますか?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];

回答:


391

ここに行きます:

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] uppercaseString];

ところで:
"april"あるlowercase[NSStringのlowercaseString]
"APRIL"であるUPPERCASE[NSStringのuppercaseString]
"April May"であるCapitalized/Word Caps[NSStringのcapitalizedString]
"April may"Sentence caps(、以下の回避策を参照する方法が欠落)

したがって、必要なのは「大文字」ではなく「大文字」です。;)

「Sentence Caps」については、通常、「Sentence」は「文字列全体」を意味することに注意してください。実際の文が必要な場合は、以下の2番目の方法を使用します。それ以外の場合は、最初の方法を使用します。

@interface NSString ()

- (NSString *)sentenceCapitalizedString; // sentence == entire string
- (NSString *)realSentenceCapitalizedString; // sentence == real sentences

@end

@implementation NSString

- (NSString *)sentenceCapitalizedString {
    if (![self length]) {
        return [NSString string];
    }
    NSString *uppercase = [[self substringToIndex:1] uppercaseString];
    NSString *lowercase = [[self substringFromIndex:1] lowercaseString];
    return [uppercase stringByAppendingString:lowercase];
}

- (NSString *)realSentenceCapitalizedString {
    __block NSMutableString *mutableSelf = [NSMutableString stringWithString:self];
    [self enumerateSubstringsInRange:NSMakeRange(0, [self length])
                             options:NSStringEnumerationBySentences
                          usingBlock:^(NSString *sentence, NSRange sentenceRange, NSRange enclosingRange, BOOL *stop) {
        [mutableSelf replaceCharactersInRange:sentenceRange withString:[sentence sentenceCapitalizedString]];
    }];
    return [NSString stringWithString:mutableSelf]; // or just return mutableSelf.
}

@end


1

誰もが迅速に上記を必要とした場合:

SWIFT 3.0以降:

これは文字列を大文字にし、最初の文字を大文字にします:

viewNoteDateMonth.text  = yourString.capitalized

これはあなたの文字列を大文字にし、すべての文字列を大文字にします:

viewNoteDateMonth.text  = yourString.uppercased()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.