Aktivieren oder ändern Sie den Fall eines NSStrings in Objective-C


140

Ich habe mich gefragt, wie man eine Zeichenfolge in einem Objekt in einem groß schreibt NSMutableArray.

An NSArrayenthält die Zeichenfolge 'April'bei Index 2.
Ich möchte, dass dies in geändert wird 'APRIL'.

Gibt es so etwas Einfaches?

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

Antworten:


391

Hier gehts:

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

BTW:
"april"ist lowercase[NSString lowercaseString]
"APRIL" ist UPPERCASE[NSString uppercaseString]
"April May" ist Capitalized/Word Caps[NSString capitalizedString]
"April may" ist Sentence caps(Methode fehlt, siehe Behelfslösung unten)

Daher heißt das, was Sie wollen, " Großbuchstaben ", nicht " groß geschrieben ". ;)

Bei "Satzkappen" muss man bedenken, dass "Satz" normalerweise "ganze Zeichenfolge" bedeutet. Wenn Sie echte Sätze wünschen, verwenden Sie die zweite Methode unten, andernfalls die erste:

@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

Für den Fall, dass jemand das oben genannte schnell benötigt:

SWIFT 3.0 und höher:

Dadurch wird Ihre Zeichenfolge groß geschrieben. Machen Sie den ersten Buchstaben groß:

viewNoteDateMonth.text  = yourString.capitalized

Dadurch wird Ihre Zeichenfolge in Großbuchstaben geschrieben und die gesamte Zeichenfolge in Großbuchstaben geschrieben:

viewNoteDateMonth.text  = yourString.uppercased()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.