如何使UILabel中的第一个字母大写?
我正在开发一个iPhone应用程序。 在一个标签中,我想显示一个用户名的第一个字母大写。 我怎么做?
如果只有一个字–NSString,则使用该方法
-capitalizedString
NSString *capitalizedString = [myStr capitalizedString]; // capitalizes every word
否则,对于多个单词string,您必须提取第一个字符,并仅使该字符大写。
(2014-07-24:目前接受的答案是不正确的)问题是非常具体的:使第一个字母大写,其余的小写字母。 使用大写的string会产生不同的结果:“大写string”而不是“大写string”。 还有另一种变体,取决于语言环境,这是大写字母StringWithLocale,但它是不正确的西class牙语,现在它使用相同的规则,如在英语,所以这就是我如何做西class牙语:
NSString *abc = @"this is test"; abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ]; NSLog(@"abc = %@",abc);
如果有人在2016年仍然感兴趣,这是一个Swift 3扩展:
extension String { func capitalizedFirst() -> String { let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)] let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex] return first.uppercased() + rest.lowercased() } func capitalizedFirst(with: Locale?) -> String { let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)] let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex] return first.uppercased(with: with) + rest.lowercased(with: with) } }
那么你完全按照通常的uppercased()或大写()来使用它:
myString.capitalizedFirst()
或myString.capitalizedFirst(with: Locale.current)
这是你的NSString+Util
类别
- (NSString *) capitalizedFirstLetter { NSString *retVal; if (self.length < 2) { retVal = self.capitalizedString; } else { retVal = string(@"%@%@",[[self substringToIndex:1] uppercaseString],[self substringFromIndex:1]); } return retVal; }
当然,你可以用NSString stringWithFormat
来做到这一点。 我用这个怪异的:
#define string(...) \ [NSString stringWithFormat:__VA_ARGS__]
只是
- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{ NSMutableString *result = [string lowercaseString].mutableCopy; [result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]]; return result; }
这是一个迅速的延伸
extension NSString { func capitalizeFirstLetter() -> NSString { return self.length > 1 ? self.substringToIndex(1).capitalizedString + self.substringFromIndex(1) : self.capitalizedString } }
这是如何为我工作的:
NSString *serverString = jsonObject[@"info"]; NSMutableString *textToDisplay = [NSMutableString stringWithFormat:@"%@", serverString]; [textToDisplay replaceCharactersInRange:NSMakeRange(0, 1) withString:[textToDisplay substringToIndex:1].capitalizedString]; cell.infoLabel.text = textToDisplay;
希望能帮助到你。
迅速:
let userName = "hard CODE" yourLabel.text = userName.localizedUppercaseString
我build议使用大写的本地化版本,因为名称是区域设置敏感的。