如何使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议使用大写的本地化版本,因为名称是区域设置敏感的。