Використовуйте великі літери або змінити регістр NSString в Objective-C


140

Мені було цікаво, як використовувати великі літери, знайдені в об'єкті в NSMutableArray.

А NSArrayмістить рядок 'April'в індексі 2.
Я хочу, щоб це було змінено на 'APRIL'.

Чи є щось таке просте?

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

Відповіді:


391

Ось ви йдете:

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

Btw:
"april"є lowercase[NSString нижній регістрString]
"APRIL" є UPPERCASE[NSString верхній регістрString]
"April May" є Capitalized/Word Caps[NSString з великої літери]
"April may" є Sentence caps(метод відсутній; див. Вирішення нижче)

Отже, те, що ви хочете, називається « великими літерами », а не « великими літерами ». ;)

Що стосується "Каракулів за вироком", то слід пам’ятати, що зазвичай "Речення" означає "весь рядок". Якщо ви хочете отримати справжні речення, використовуйте другий метод нижче, в іншому випадку перший:

@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()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.