Сделать NSString заглавными или изменить регистр в Objective-C

141

Мне было интересно, как использовать заглавные буквы в строке, найденной в объекте в NSMutableArray.

An NSArrayсодержит строку 'April'с индексом 2.
Я хочу, чтобы это было изменено на 'APRIL'.

Есть что-то такое простое?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
ничего
источник

Ответы:

393

Вот и все:

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(метод отсутствует; см. Обходной путь ниже)

Следовательно, то, что вы хотите, называется « заглавными », а не « заглавными ». ;)

Что касается «заглавных букв», следует иметь в виду, что обычно «предложение» означает «целую строку». Если вы хотите получить реальные предложения, используйте второй метод, описанный ниже, в противном случае - первый:

@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
Regexident
источник
1

В случае, если кому-то нужно было быстро:

SWIFT 3.0 и выше:

это сделает вашу строку заглавной, сделайте первую букву заглавной:

viewNoteDateMonth.text  = yourString.capitalized

это будет верхний регистр вашей строки, сделать всю строку в верхнем регистре:

viewNoteDateMonth.text  = yourString.uppercased()
MhmdRizk
источник