Me ha surgido la curiosidad. Intento poner en mayúsculas la primera letra de cada palabra con un replace:
Código:
var original="hello how are you";
var resultado="Hello How Are You";
var prueba1 = original.replace(/\b([a-z])/g, "$1".toUpperCase() );
var prueba2 = original.replace(/\b([a-z])/g, function($1) {
return $1.toUpperCase();
} );
if( resultado === prueba1 ) document.write("Éxito al hacerlo directamente: "+prueba1+"<br/>");
else document.write("Error haciéndolo directamente: "+prueba1+"<br/>");
if( resultado === prueba2 ) document.write("Éxito al hacerlo con una function auxiliar: "+prueba2+"<br/>");
else document.write("Error haciéndolo con function auxiliar: "+prueba2+"<br/>");
El resultado de esto (FF2) es:
Cita: Error haciéndolo directamente: hello how are you
Éxito al hacerlo con una function auxiliar: Hello How Are You
No me lo explico, y tampoco he encontrado razones por la red. ¿replace no puede llevar directamente una función nativa como toUpperCase? ¿O es que no puede con los métodos?