Skip to content

Instantly share code, notes, and snippets.

@rickycheers
Created January 15, 2013 19:45
Show Gist options
  • Save rickycheers/4541395 to your computer and use it in GitHub Desktop.
Save rickycheers/4541395 to your computer and use it in GitHub Desktop.
ucwords in JavaScript - Equivalent to PHP's ucwords() Returns a string with the first letter in upper case of each word.
String.prototype.ucwords = function() {
str = this.toLowerCase();
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function(s){
return s.toUpperCase();
});
};
@hakandilek
Copy link

Use toLocaleUpperCase() if you have any trouble with non-standart Unicode mappings like Turkish has.
See Mozilla reference

@zatamine
Copy link

Hi,

It's don't work using a clash of KINGS , I got A Clash of Kings instead of A Clash Of Kings

@TiagoGouvea
Copy link

It wont work with accents... like "Úrsula"

@megabyte1981
Copy link

It will now....
var str = "bjôrm пô~р да₧иƒоªич üder12 ñƒque αλφ¢";
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
return letter.toUpperCase();
});
alert(str);

@EdwinBetanc0urt
Copy link

Para mayuscula en cada palabra:

var lsCadena = "hola MUNDO";

lsCadena = lsCadena.toLowerCase().replace(/\b[a-z]/g, function(letra) {
    return letra.toUpperCase();
});

//salida: Hola Mundo

Para mayuscula en la primera letra:

var lsCadena = "hola MUNDO";

lsCadena = lsCadena .toLowerCase();
lsCadena = lsCadena .charAt(0).toUpperCase() + lsCadena .slice(1);

//salida: Hola mundo

@dlaudh
Copy link

dlaudh commented Dec 7, 2018

@EdwinBetanc0urt

Como respuesta a esto tambien si quieres ahorrarte el paso de declarar lsCadena a lowerCase lo puedes hacer en el mismo lsCadena.slice(1).toLowerCase();

Pero tu forma sirve!

@chilipepper987
Copy link

I use str.toLowerCase().replace(/(?<= )[^\s]|^./g, a=>a.toUpperCase())

@CodeCurosity
Copy link

I use str.toLowerCase().replace(/(?<= )[^\s]|^./g, a=>a.toUpperCase())

Thanks, this worked.

@tljafar
Copy link

tljafar commented Sep 7, 2020

I use str.toLowerCase().replace(/(?<= )[^\s]|^./g, a=>a.toUpperCase())

Thanks, this worked.

@JorisDebonnet
Copy link

JorisDebonnet commented Oct 12, 2020

Careful though, that last one doesn't work in Safari. For some reason, it doesn't support lookbehind regex.
So I am now using (' '+str).replace(/ [\w]/g, a => a.toLocaleUpperCase()).trim(); ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment