web-dev-qa-db-ja.com

UILabelで最初の文字を大文字にする方法は?

IPhoneアプリを開発しています。ラベルでは、ユーザーの名前の最初の文字を大文字で表示したいと思います。それ、どうやったら出来るの?

47
HardCode

Word Stringが1つしかない場合は、メソッドを使用します

-capitalized

let capitalizedString = myStr.capitalized // capitalizes every Word

それ以外の場合、複数のWord文字列の場合、最初の文字を抽出し、その文字のみを大文字にする必要があります。

94
beryllium

(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);
61

誰かがまだ2016に興味がある場合、ここにSwift拡張があります:

_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