在Objective-C中将NSString的大小写改为大写或小写

142

我想知道如何将 NSMutableArray 对象中的字符串大写。

NSArray 在索引2处包含字符串'April'
我希望将其更改为 'APRIL'

是否有类似以下简单的方法?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
3个回答

395

给你:

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

顺便提一下:
"april"是小写 ➔ [NSString lowercaseString]
"APRIL"是大写 ➔ [NSString uppercaseString]
"April May"是首字母大写 ➔ [NSString capitalizedString]
"April may"是句首字母大写 ➔ (方法缺失;请参见下面的解决方法)

所以你想要的被称为"大写",而不是"首字母大写"。 ;)

至于"句首字母大写",必须记住通常"句子"指的是"整个字符串"。如果您希望使用真实的句子,请使用下面的第二种方法;否则使用第一种方法:

@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,请参考以下内容:
Swift 3.0及以上版本:
这将使您的字符串大写,并使第一个字母大写:
viewNoteDateMonth.text  = yourString.capitalized

这将把您的字符串转换为大写,使整个字符串都是大写字母:

viewNoteDateMonth.text  = yourString.uppercased()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接