พิมพ์ใหญ่หรือเปลี่ยนแปลงกรณี NSString ใน Objective-C


140

NSMutableArrayผมสงสัยว่าจะใช้ประโยชน์สตริงที่พบในวัตถุใน

NSArrayมีสตริง'April'ที่ดัชนี 2. ผมอยากให้เรื่องนี้จะมีการเปลี่ยนแปลงไป
'APRIL'

มีอะไรแบบนี้ง่ายไหม?

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

คำตอบ:


391

ไปเลย:

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

Btw:
"april"is 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


1

ในกรณีที่ทุกคนต้องการข้างต้นอย่างรวดเร็ว:

SWIFT 3.0 และสูงกว่า:

สิ่งนี้จะทำให้สตริงของคุณเป็นตัวอักษรตัวใหญ่ตัวแรก:

viewNoteDateMonth.text  = yourString.capitalized

นี่จะเป็นตัวพิมพ์ใหญ่สตริงของคุณทำทุกกรณีบนสตริง:

viewNoteDateMonth.text  = yourString.uppercased()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.