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

时间:2012-01-26 17:08:18

标签: ios objective-c swift cocoa-touch nsstring

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

9 个答案:

答案 0 :(得分:94)

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

-capitalized

let capitalizedString = myStr.capitalized // capitalizes every word

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

答案 1 :(得分:61)

(2014-07-24:目前接受的答案不正确)问题非常具体:将第一个字母设为大写,其余为小写。使用capitalizedString会产生不同的结果:“Capitalized String”而不是“Capitalized string”。还有另一种变体,取决于locale,它是大写的StringWithLocale,但它对于西班牙语来说不正确,现在它使用与英语相同的规则,所以这就是我为西班牙语做的事情:

NSString *abc = @"this is test";

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

答案 2 :(得分: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)
    }
}

然后你完全按照通常的大写()或大写():

使用它

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

答案 3 :(得分: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;
}

当然,您可以使用NSString stringWithFormat执行此操作。我使用这种古怪:

#define string(...) \
[NSString stringWithFormat:__VA_ARGS__]

答案 4 :(得分:7)

简单地

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

     return result;
}

答案 5 :(得分:1)

这是一个快速的扩展

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

答案 6 :(得分:1)

这就是我的工作方式:

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

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

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

cell.infoLabel.text = textToDisplay;

希望它有所帮助。

答案 7 :(得分:1)

作为已接受答案的延伸

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.

答案 8 :(得分:-1)

<强>夫特:

g.V().has(label,"reputation").has("reputation","7").in()

我建议使用此大写的本地化版本,因为名称是区域设置敏感的。