web-dev-qa-db-ger.com

Wie erstelle ich Großbuchstaben in einem UILabel?

Ich entwickle eine iPhone-App. In einem Etikett möchte ich den ersten Buchstaben eines Benutzers mit dem Namen in Großbuchstaben anzeigen. Wie mache ich das?

47
HardCode

Wenn nur eine Wortzeichenfolge vorhanden ist, verwenden Sie die Methode

-kapitalisiert

let capitalizedString = myStr.capitalized // capitalizes every Word

Andernfalls müssen Sie für Zeichen mit mehreren Wörtern das erste Zeichen extrahieren und nur dieses Zeichen in Großbuchstaben setzen.

91
beryllium

(2014-07-24: Derzeit akzeptierte Antwort ist nicht korrekt) Die Frage ist sehr konkret: Machen Sie den ersten Buchstaben in Großbuchstaben, lassen Sie den Rest in Kleinbuchstaben. Die Verwendung von CapitalizedString führt zu einem anderen Ergebnis: "Capitalized String" anstelle von "Capitalized String". Abhängig vom Gebietsschema gibt es eine andere Variante, nämlich "capitalizedStringWithLocale", aber es ist nicht korrekt für Spanisch. Im Moment werden die gleichen Regeln wie in Englisch verwendet. Daher mache ich es für Spanisch:

NSString *abc = @"this is test";

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

Falls sich noch jemand für 2016 interessiert, ist hier eine Swift 3 Erweiterung:

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)
    }
}

Dann verwenden Sie es genauso wie Sie es für die üblichen Großbuchstaben () oder Großbuchstaben () tun würden:

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

8
winterized

Dies ist für Ihre NSString+Util Kategorie ...

- (NSString *) capitalizedFirstLetter {
    NSString *retVal;
    if (self.length < 2) {
        retVal = self.capitalizedString;
    } else {
        retVal = string(@"%@%@",[[self substringToIndex:1] uppercaseString],[self substringFromIndex:1]);
    }
    return retVal;
}

Das geht natürlich mit NSString stringWithFormat. Ich benutze diese Komik:

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

Einfach

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

     return result;
}
7
Amr Lotfy

So hat es für mich funktioniert:

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

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

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

cell.infoLabel.text = textToDisplay;

Ich hoffe es hilft.

1
ppalancica

hier ist eine schnelle Erweiterung dafür

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

Als Erweiterung der akzeptierten Antwort

capitalizedString wird für Großbuchstaben verwendet.

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

Wenn Sie jedoch viele Wörter in einer Zeichenfolge haben und nur das erste Zeichen als Großbuchstaben verwenden möchten, verwenden Sie die unten stehende Lösung

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