如何在UILabel中制作首字母大写字母?

Har*_*ode 47 cocoa-touch objective-c nsstring ios swift

我正在开发一款iPhone应用程序.在标签中,我想显示用户名字大写的第一个字母.我怎么做?

ber*_*ium 94

如果只有一个单词String,则使用该方法

-capitalized

let capitalizedString = myStr.capitalized // capitalizes every word
Run Code Online (Sandbox Code Playgroud)

否则,对于多字符串,您必须提取第一个字符并仅使该字符为大写.

  • "capitalizedString"返回:接收器中每个单词的第一个字符的字符串更改为其对应的大写值,所有剩余的字符设置为其对应的小写值. (9认同)
  • 这个答案既正确又错误 (3认同)
  • 如果你有一个名为`yourCoolTable`的数据库表的字符串名称,并且你在名字`YourCoolTable`之后,这将不起作用,因为它返回`Yourcooltable`,它只是在相反的方向上破坏你的值.修复第一个角色,同时捣毁剩下的角色. (2认同)

jos*_*new 62

(2014-07-24:目前接受的答案不正确)问题非常具体:将第一个字母设为大写,其余为小写.使用capitalizedString会产生不同的结果:"Capitalized String"而不是"Capitalized string".有根据的语言环境,这是capitalizedStringWithLocale另一种变体,但它并不适合西班牙正确的,现在它使用同样的规则,如英语,所以这是我正在做的西班牙语:

NSString *abc = @"this is test";

abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ];       
NSLog(@"abc = %@",abc);
Run Code Online (Sandbox Code Playgroud)

  • 不,Beryllium的答案大写了NSString的每一个字. (8认同)
  • 这将在空字符串上抛出异常 (4认同)
  • 这不就是铍的答案吗? (2认同)

win*_*zed 8

如果有人在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)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你就像使用通常的大写()或大写()一样使用它:

myString.capitalizedFirst() 要么 myString.capitalizedFirst(with: Locale.current)


Dan*_*ark 7

这适用于您的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;
}
Run Code Online (Sandbox Code Playgroud)

NSString stringWithFormat当然,你可以做到这一点.我用这种古怪:

#define string(...) \
[NSString stringWithFormat:__VA_ARGS__]
Run Code Online (Sandbox Code Playgroud)


Amr*_*tfy 7

只是

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

     return result;
}
Run Code Online (Sandbox Code Playgroud)