web-dev-qa-db-ja.com

Objective-CでNSStringの大文字と小文字を変更する

NSMutableArray内のオブジェクトで見つかった文字列を大文字にする方法を考えていました。

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

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

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

ここに行く:

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

ところで:
"april"lowercase is [NSString lowercaseString]
"APRIL"UPPERCASE is [NSString uppercaseString]
"April May"Capitalized/Word Caps is [NSString capitalizedString]
"April may"Sentence caps(メソッドがありません。以下の回避策を参照してください)

したがって、必要なものは「uppercase」と呼ばれ、「capitalized」ではありません。 ;)

「Sentence Caps」については、通常「Sentence」は「string」全体を意味することに留意する必要があります。実際の文章を希望する場合は、以下の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
388
Regexident
viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] uppercaseString];

ドキュメント: http://developer.Apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//Apple_ref/occ/instm/NSString/uppercaseString

lowercaseString および capitalizedString を使用することもできます

20
theChrisKent

Swiftで上記が必要な場合:

Swift 3.0以降:

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

viewNoteDateMonth.text  = yourString.capitalized

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

viewNoteDateMonth.text  = yourString.uppercased()
1
MhmdRizk