Convertir el primer carácter de cada palabra del string
La función ucwords() de Php convierte el primer carácter de cada palabra a mayúscula.
// Ejemplo
<?
$foo= 'Viens, fait le pour moi!';
$bar= ucwords($foo); // Viens, Fait Le Pour Moi!
print $bar."\n";
Para hacer lo contrario, es decir, convertir a minúscula el primer carácter de cada palabra, tenemos que trabajar un poco más:
<?
/*
# lcwords v1.000
# Convertir el primer carácter de cada palabra a minúscula
# input string
# return string
*/
function lcwords($string)
{
/* Variables temporales */
# variable loop
$a = 0;
# almacenar todas las palabras en un array para luego unirlas en un string y retornarlo
$string_new = array();
$string_exp = explode(" ",$string);
foreach($string_exp as $astring)
{
for($a=0;$a<strlen($astring);$a++)
{
# chequear que el carácter es una letra
# ejemplo: si la palabra es "100PRE" debería convertir la letra P solamente
# chequear el carácter en la posicion $a
if(preg_match("'\w'",$astring[$a]))
{
$astring[$a] = strtolower($astring[$a]);
# conseguido! finalizar el bucle
break;
}
}
$string_new[] = $astring;
}
# devolver el string como la unión de las palabras separadas por un espacio
return implode(" ",$string_new);
}
// Ejemplo 2
$foo = 'Viens, embrasse MOI!';
$bar = lcwords($foo); // viens, embrasse mOI!
En Javascript no hay una función ucwords() como en Php para convertir en mayúsculas la primera letra de cada palabra en un string, pero podemos crear una:
function ucwords(str){
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function($1){
return $1.toUpperCase();
});
}
//Ejemplo
str= "Tout ce qui nous a unis";
console.log(ucwords(str)); // Tout Ce Qui Nous A Unis
Para convertir a minúsculas la primera letra de cada palabra en un string en Javascript, podemos armar esta función lcwords:
function lcwords(str){
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function($1){
return $1.toLowerCase();
});
}
//Ejemplo
str= "Tout ce Qui NOUS a Unis";
console.log(lcwords(str)); // tout ce qui nOUS a unis
Para convertir el primer carácter de cada palabra de un string a mayúsculas o minúsculas en Perl tampoco existe una función ucwords() o lcwords(). Pero podemos usar split, map y join en conjunto para lograr ese efecto. Con split separamos el string en palabras, con map aplicamos una función a cada palabra, en este caso ucfirst o lcfirst, y luego con join volvemos a juntar el string. Veamos el ejemplo:
# Ejemplo 1
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { ucfirst } split /(\s+)/, $texto;
# CES TRaces QuE Tu As Laisse à Paris
print "Texto: " . $texto;
# Ejemplo 2
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { lcfirst } split /(\s+)/, $texto;
# cES tRaces quE tu as laisse à paris
print "Texto: " . $texto;
Un tercer ejemplo
Si además de pasar la primera letra a mayúsculas, queremos las demás en minúsculas, prueba agregar otra función en map, en este orden: ucfirst lc# Ejemplo 3
$texto = "CES TRaces quE Tu as laisse à Paris";
$texto = join '', map { ucfirst lc } split /(\s+)/, $texto;
# Ces Traces Que Tu As Laisse à Paris
print "Texto: " . $texto;