将NSString的单个字符设置为大写的简便方法

Rog*_*Rog 10 cocoa cocoa-touch nsstring

我想将NSString的第一个字符更改为大写.不幸的是,- (NSString *)capitalizedString将每个单词的第一个字母转换为大写.有一种简单的方法可以将单个字符转换为大写吗?

我目前正在使用:

NSRange firstCharRange = NSMakeRange(0,1);
NSString* firstCharacter = [dateString substringWithRange:firstCharRange];
NSString* uppercaseFirstChar = [firstCharacter originalString];
NSMutableString* capitalisedSentence = [originalString mutableCopy];
[capitalisedSentence replaceCharactersInRange:firstCharRange withString:uppercaseFirstChar];
Run Code Online (Sandbox Code Playgroud)

这看起来有点复杂,但至少不会对底层unicode字符串的编码做出任何假设.

doo*_*ork 17

与你所拥有的方法非常类似,但更加简洁:

 NSString *capitalisedSentence = 
    [dateString stringByReplacingCharactersInRange:NSMakeRange(0,1)  
    withString:[[dateString  substringToIndex:1] capitalizedString]];
Run Code Online (Sandbox Code Playgroud)

  • 是的,为cr/lf优化;-)我想让优化者把我的临时工拿出来. (2认同)

Jar*_*aus 3

由于NSString是不可变的,因此您所拥有的似乎是做您想做的事情的好方法。和类似方法的实现(NSString*)uppercaseString可能看起来非常像您所编写的方法,因为它们返回一个新的方法,NSString而不是修改您发送消息的方法。