A SO page has a nice example of how to capitalize each word in a string in JavaScript:
function capitalizeEachWord(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
You can test this code at JsFiddle.net like this:
var x = "foo bar baz";
var y = capitalizeEachWord(x);
console.log('x = ' + x); // prints "foo bar baz"
console.log('y = ' + y); // prints "Foo Bar Baz"
As you can see, this function doesn’t modify the string you give it, but returns a new string with each word capitalized.
Note the use of the regular expression in this code. The string \w\S* matches a “word character” followed by zero or more “non-whitespace characters”. Then, rather than use a replacement pattern, a function is used to process what’s found with the pattern. That’s good stuff.
Another approach using slice and charAt
Another clever approach shows how to use slice and charAt:
function capitalizeEachWord(str) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
I haven’t tested the two functions to see how they work on fringe cases, but at first glance they seem very similar.
Combining capitalize with removing blank spaces
In some code I just wrote, I combine this capitalize function with this function that removes blank spaces in a string:
function removeSpaces(str) {
return str.replace(/ /g,'');
}
The combination of functions, and resulting output is shown here:
var x = "foo bar baz";
var y = removeSpaces(capitalizeEachWord(x));
console.log('x = ' + x); // prints "foo bar baz"
console.log('y = ' + y); // prints "FooBarBaz"
I’ve done a lot of text processing in the last year, and I continue to be amazed at what a programmer can do with pattern matching and regular expressions.

