IPhoneアプリを開発しています。ラベルでは、ユーザーの名前の最初の文字を大文字で表示したいと思います。それ、どうやったら出来るの?
Word Stringが1つしかない場合は、メソッドを使用します
let capitalizedString = myStr.capitalized // capitalizes every Word
それ以外の場合、複数のWord文字列の場合、最初の文字を抽出し、その文字のみを大文字にする必要があります。
(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);
誰かがまだ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)
これは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__]
単に
- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{
NSMutableString *result = [string lowercaseString].mutableCopy;
[result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]];
return result;
}
これは私のために働いた方法です:
NSString *serverString = jsonObject[@"info"];
NSMutableString *textToDisplay = [NSMutableString stringWithFormat:@"%@", serverString];
[textToDisplay replaceCharactersInRange:NSMakeRange(0, 1) withString:[textToDisplay substringToIndex:1].capitalizedString];
cell.infoLabel.text = textToDisplay;
それが役に立てば幸い。
ここにSwift拡張機能があります
extension NSString {
func capitalizeFirstLetter() -> NSString {
return self.length > 1 ?
self.substringToIndex(1).capitalizedString + self.substringFromIndex(1) :
self.capitalizedString
}
}
受け入れられた答えの延長として
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.