HardCode
HardCode

Reputation: 2025

How to make first letter uppercase in a UILabel?

I'm developing an iPhone app. In a label, I want to show an user's first letter of the name uppercase. How do I do that?

Upvotes: 51

Views: 44108

Answers (11)

Valerika
Valerika

Reputation: 474

Capitalized only the 1st letter

extension String {

    func capitalizingFirstLetter() -> String {
        prefix(1).capitalized + dropFirst()
    }

}

Capitalized each word in sentence

label.text = string.capitalized

Upvotes: -1

asem elkhouli
asem elkhouli

Reputation: 29

you can Just add this extension

extension String {
    var capitalizedFirst: String {
        self.prefix(1).capitalized + self.dropFirst().lowercased()
    }
    var capitalizedFirstWordInSentence: String {
        let fullTextArr = self.components(separatedBy: " ")
        var allText = ""
        for i in 0..<fullTextArr.count {allText += fullTextArr[i].capitalizedFirst + " "}
        allText.removeLast()
        return allText
    }
}

you can just use the first one only but the second one will convert every word to the first letter to be capitalized for example:

let hello = "hello, world!"
print(hello.capitalizedFirstWordInSentence)
//Hello,World!
print(hello.capitalizedFirst)
//Hello, world!

Upvotes: 0

beryllium
beryllium

Reputation: 29767

If there is only one word String, then use the method

-capitalized

let capitalizedString = myStr.capitalized // capitalizes every word

Otherwise, for multi word strings, you have to extract first character and make only that character upper case.

Upvotes: 103

Suraj K Thomas
Suraj K Thomas

Reputation: 5883

As an extension to the accepted answer

capitalizedString is used for making uppercase letters .

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

But if you have many words in a string and wants to get only first character as upper case use the below solution

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.

Upvotes: 2

Dan Rosenstark
Dan Rosenstark

Reputation: 69757

This is for your NSString+Util category...

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

You can do that with NSString stringWithFormat, of course. I use this weirdness:

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

Upvotes: 8

Amr Lotfy
Amr Lotfy

Reputation: 2997

Simply

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

     return result;
}

Upvotes: 7

winterized
winterized

Reputation: 3314

In case someone is still interested in 2016, here is a Swift 3 extension:

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

Then you use it exactly as you would for the usual uppercased() or capitalized():

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

Upvotes: 9

Juan Boero
Juan Boero

Reputation: 6417

Swift:

let userName = "hard CODE"
yourLabel.text = userName.localizedUppercaseString

I recommend using this localised version of uppercase, since names are locale sensitive.

Upvotes: -1

ppalancica
ppalancica

Reputation: 4277

This is how it worked for me:

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

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

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

cell.infoLabel.text = textToDisplay;

Hope it helps.

Upvotes: 1

calql8edkos
calql8edkos

Reputation: 406

here's a swift extension for it

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

Upvotes: 1

(2014-07-24: Currently accepted answer is not correct) The question is very specific: Make the first letter uppercase, leave the rest lowercase. Using capitalizedString produces a different result: “Capitalized String” instead of “Capitalized string”. There is another variant depending on the locale, which is capitalizedStringWithLocale, but it's not correct for spanish, right now it's using the same rules as in english, so this is how I'm doing it for spanish:

NSString *abc = @"this is test";

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

Upvotes: 63

Related Questions