Viết hoa hoặc thay đổi trường hợp của một NSString trong Objective-C


140

Tôi đã tự hỏi làm thế nào để viết hoa một chuỗi tìm thấy trong một đối tượng trong một NSMutableArray.

An NSArraychứa chuỗi 'April'ở chỉ mục 2.
Tôi muốn thay đổi thành 'APRIL'.

Có một cái gì đó đơn giản như thế này?

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

Câu trả lời:


391

Ở đây ya đi:

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

Btw:
"april"lowercase[NSString lowcaseString]
"APRIL"UPPERCASE[NSString chữ hoa]
"April May"Capitalized/Word Caps[NSString capitalizedString]
"April may"Sentence caps(phương thức bị thiếu; xem cách giải quyết bên dưới)

Do đó, những gì bạn muốn được gọi là " chữ hoa ", không phải " viết hoa ". ;)

Đối với "Mũ câu", người ta phải nhớ rằng "Câu" có nghĩa là "toàn bộ chuỗi". Nếu bạn muốn câu thực sự sử dụng phương thức thứ hai, bên dưới, nếu không thì câu thứ nhất:

@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

Trong trường hợp bất cứ ai cần những điều trên trong swift:

SWift 3.0 trở lên:

điều này sẽ viết hoa chuỗi của bạn, tạo vốn chữ cái đầu tiên:

viewNoteDateMonth.text  = yourString.capitalized

điều này sẽ viết hoa chuỗi của bạn, làm cho tất cả các chữ hoa

viewNoteDateMonth.text  = yourString.uppercased()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.