terça-feira, 8 de dezembro de 2009

Javascript - Primeira em Maiúscula... Rewritten

Fiz uma nova versão desta função, agora com um código muito mais limpo e eficiente, pois utiliza expressões regulares...
E com apenas 14 linhas...

Não usei \w e \W pois ele não reconhece como Word palavras acentuadas...
function UcWords(campo)
{
    val = campo.value;
    newVal = val
        .toLowerCase()
        .replace(/[^A-Za-záâàãäéêèëíîìïóõòôöúùûü][A-Za-záâàãäéêèëíîìïóõòôöúùûü]/g, function(m){return m.toUpperCase()})
        .replace(/[0-9][A-Za-záâàãäéêèëíîìïóõòôöúùûü]/g, function(m){return m.toUpperCase()})
        .replace(/( (da|das|e|de|do|dos|para|na|nas|no|nos) )/gi, function(m){return m.toLowerCase()})
        .replace(/^./, function(m){return m.toUpperCase()})
    if (val != newVal)
    {
        campo.value = newVal;
    }
}

2 comentários:

Abel disse...

Parabéns! funciona perfeitamente! Faltou colocar o "Ç", mas nada que não possa ser adicionado.

nota 10

V. Frari disse...

Amigo, seu código é muito bom. Como posso contornar um problema? Se uma preposição é a primeira palavra do campo, ela não permanece minúscula. Como costumo quebrar os nomes em nome e sobrenome, isso é um inconveniente.
Obrigado