Я разрабатываю приложение для iPhone. В ярлыке я хочу показать первую букву пользователя с именем uppercase. Как это сделать?
Как сделать первую букву в верхнем регистре в UILabel?
Ответ 1
Если есть только одно слово-NSString, используйте метод
NSString *capitalizedString = [myStr capitalizedString]; // capitalizes every word
В противном случае для нескольких строк слов вы должны извлечь первый символ и сделать только этот верхний регистр символа.
Ответ 2
(2014-07-24: данный принятый ответ неверен) Вопрос очень конкретный: сделайте первую букву в верхнем регистре, оставьте остальные в нижнем регистре. Использование capitalizedString дает другой результат: "Заглавная строка" вместо "Заглавная строка". Существует еще один вариант в зависимости от языка, который является capitalizedStringWithLocale, но он не подходит для испанского языка, прямо сейчас он использует те же правила, что и на английском, поэтому я так делаю это для испанского:
NSString *abc = @"this is test";
abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ];
NSLog(@"abc = %@",abc);
Ответ 3
Если кто-то еще заинтересован в 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() или capitalized():
myString.capitalizedFirst()
или myString.capitalizedFirst(with: Locale.current)
Ответ 4
Это для категории 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__]
Ответ 5
Просто
- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{
NSMutableString *result = [string lowercaseString].mutableCopy;
[result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]];
return result;
}
Ответ 6
здесь быстрое расширение для него
extension NSString {
func capitalizeFirstLetter() -> NSString {
return self.length > 1 ?
self.substringToIndex(1).capitalizedString + self.substringFromIndex(1) :
self.capitalizedString
}
}
Ответ 7
Вот как это сработало для меня:
NSString *serverString = jsonObject[@"info"];
NSMutableString *textToDisplay = [NSMutableString stringWithFormat:@"%@", serverString];
[textToDisplay replaceCharactersInRange:NSMakeRange(0, 1) withString:[textToDisplay substringToIndex:1].capitalizedString];
cell.infoLabel.text = textToDisplay;
Надеюсь, что это поможет.
Ответ 8
Swift:
let userName = "hard CODE"
yourLabel.text = userName.localizedUppercaseString
Я рекомендую использовать эту локализованную версию прописных букв, так как имена чувствительны к локали.