Format Input Text in Title Case

The user is promted to input a name. I want to make sure that the formatting is correct - in Title Case.

For example, if the user types in, bob smith, all in lowercase I want java to format it correctly into: Bob Smith - formatted in Title Case.

I am trying to work something out by using StringBuffer...

I may eventually get there, but to speed up the process, you may know something really simple!
LVL 2
Ke11ieAsked:
Who is Participating?
 
objectsConnect With a Mentor Commented:
try using split() to first split the string into words.
0
 
Ke11ieAuthor Commented:
I don't really know how to do that... I'm only a "Learner".
0
 
objectsCommented:
String[] words = s.split(" ");
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
Ke11ieAuthor Commented:
So then how to get it to only capitalise the first character of each word?
0
 
objectsCommented:
then use your StringBuuffer to convert each word to title case.
0
 
Ke11ieAuthor Commented:
I can only convert all words to uppercase or all words to lowercase. Is there a simple way for Title Case? I don't know how to do this.
0
 
objectsCommented:
no there is no simple way, you need to implement it yourself.
0
 
Tommy BraasConnect With a Mentor Commented:
Hi Ke11ie,

Instead of splitting the String up into the parts, you could create a StringBuffer with your String, and iterate over it replacing the first character after a white space with its upper case character.
A simple for-loop will do. Don't forget the first character!

\t
0
 
Ke11ieAuthor Commented:
The for loop does sound like a good idea but i still don't really know how to make it change each of the characters. Do I use something like CharAt(" ") + 1? toUppercase?
0
 
Tommy BraasCommented:
Ke11ie,

There is a static toUpperCase() method on the Character class and a setCharAt() method on the StringBuffer class. Use those methods!

\t
0
 
zzynxSoftware engineerCommented:
>>The for loop does sound like a good idea but i still don't really know how to make it change each of the characters.
>>Do I use something like CharAt(" ") + 1? toUppercase?

1) You have your string you want to title case
2) Have a StringBuffer too (initially empty)
3) Iterate over your string
    with yourString.charAt(i) you can get the character at index i
    with yourString.charAt(i-1) you can get the character at index i-1
    a) if it is the first character of the string : append it its uppercase version to the StringBuffer
         [ Character.toUpperCase(theOriginalCharacter) returns the upper cased character ]
         [ You can append a character by just calling append(yourCharacter) ]
    b) if the previous character (the one at index i-1) is a blank :
        append the uppercase version of the character at index i to the StringBuffer
    c) if it is none of the above cases a) or b) just append the character at index i to the StringBuffer
4) After having iterated through the whole string this way, your StringBuffer contains the title cased version
    of your original string.
0
 
objectsCommented:
You don't need to iterate over the whole string, only the first character needs to be changed.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.