Подтвердить что ты не робот

Как сделать первую букву в верхнем регистре в UILabel?

Я разрабатываю приложение для iPhone. В ярлыке я хочу показать первую букву пользователя с именем uppercase. Как это сделать?

4b9b3361

Ответ 1

Если есть только одно слово-NSString, используйте метод

- capitalizedString

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

Я рекомендую использовать эту локализованную версию прописных букв, так как имена чувствительны к локали.