it-swarm.com.ru

Как сделать первую букву заглавной в UILabel?

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

47
HardCode

Если есть только одна строка Word, используйте метод

-капитализированы

let capitalizedString = myStr.capitalized // capitalizes every Word

В противном случае, для строк с несколькими словами, вы должны извлечь первый символ и сделать его заглавным.

91
beryllium

(2014-07-24: в настоящее время принят неправильный ответ). Вопрос очень конкретен: введите первую букву заглавными буквами, оставьте остальные строчными. Использование прописной строки приводит к другому результату: «Заглавная строка» вместо «Заглавная строка». Существует другой вариант, в зависимости от локали, который называется capitalizedStringWithLocale, но он не подходит для испанского языка, сейчас он использует те же правила, что и для английского, поэтому я делаю это для испанского языка:

NSString *abc = @"this is test";

abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ];       
NSLog(@"abc = %@",abc);
60
josema.vitaminew

Если кто-то все еще заинтересован в 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)

8
winterized

Это для вашей категории 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__]
7
Dan Rosenstark

Просто

- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{
     NSMutableString *result = [string lowercaseString].mutableCopy;
     [result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]];

     return result;
}
7
Amr Lotfy

Вот как это работает для меня:

NSString *serverString = jsonObject[@"info"];

NSMutableString *textToDisplay = [NSMutableString stringWithFormat:@"%@", serverString];

[textToDisplay replaceCharactersInRange:NSMakeRange(0, 1) withString:[textToDisplay substringToIndex:1].capitalizedString];

cell.infoLabel.text = textToDisplay;

Надеюсь, поможет.

1
ppalancica

вот расширение Swift для него

extension NSString {
    func capitalizeFirstLetter() -> NSString {
        return self.length > 1 ?
          self.substringToIndex(1).capitalizedString + self.substringFromIndex(1) :
          self.capitalizedString
    }
}
1
calql8edkos

Как продолжение принятого ответа

capitalizedString используется для создания заглавных букв.

NSString *capitalizedString = [myStr capitalizedString]; // capitalizes every Word

Но если у вас много слов в строке и вы хотите получить только первый символ в верхнем регистре, используйте приведенное ниже решение

NSString *firstCapitalChar = [[string substringToIndex:1] capitalizedString];
NSString *capString = [string stringByReplacingCharactersInRange:NSMakeRange(0,1) withString: capString];


// extract first character and make only that character upper case.
1
Suraj K Thomas