Gunakan huruf besar atau ubah huruf besar-kecil NSString di Objective-C

140

Saya bertanya-tanya bagaimana cara memanfaatkan huruf besar pada sebuah objek di dalam NSMutableArray.

An NSArrayberisi string 'April'pada indeks 2.
Saya ingin ini diubah menjadi 'APRIL'.

Apakah ada sesuatu yang sederhana seperti ini?

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

Jawaban:

391

Ini dia:

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

Btw:
"april"adalah lowercase[NSString lowercaseString]
"APRIL" adalah UPPERCASE[NSString uppercaseString]
"April May" adalah Capitalized/Word Caps[NSString capitalizedString]
"April may" adalah Sentence caps(metode hilang, lihat solusi di bawah ini)

Oleh karena itu apa yang Anda inginkan disebut " huruf besar ", bukan " dikapitalisasi ". ;)

Sedangkan untuk "Kalimat Caps" harus diingat bahwa biasanya "Kalimat" berarti "seluruh string". Jika Anda menginginkan kalimat yang sebenarnya, gunakan metode kedua, di bawah ini, atau yang pertama:

@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
sumber
1

Seandainya ada yang membutuhkan hal di atas dengan cepat:

SWIFT 3.0 dan lebih tinggi:

ini akan menggunakan huruf besar untuk string Anda, buat huruf kapital pertama:

viewNoteDateMonth.text  = yourString.capitalized

ini akan mengubah huruf besar string Anda, membuat semua huruf besar huruf:

viewNoteDateMonth.text  = yourString.uppercased()
MhmdRizk
sumber