sexta-feira, 10 de fevereiro de 2012

Função para limpar texto em javascript


Ontem, precisei de uma função em javascript pra tirar acentos e caracteres especiais de textos, tipo essa que o wordpress faz quando vamos criar um novo post.
O problema não era só trocar os caracteres especiais por traços, e sim trocar as letras acentuadas pelas respectivas sem acentos. Acabei achando  nesse blog o que eu precisava pra fazer essa parte.
O resto foi com expressões regulares.
A função ficou assim:
function limpar(texto)
{
 texto = texto.replace(/^\s+|\s+$/g, "");//tira espaços do inicio e do fim
 texto = texto.replace(/\s{2,}/g, " ");//tira espaços duplicados
 
 replacements = {
  "[áãàäâª]": "a",
  "[éèëê]": "e",
  "[íìï]": "i",
  "[óòôõö]": "o",
  "[ùúûü]": "u",
  "[ç]": "c"
 };
 regex = {};
 for (key in replacements) {
   regex[key] = new RegExp(key, 'g');
 }

 for(key in replacements){
   texto = texto.replace(regex[key], replacements[key]);//tira caracteres acentuados
 }
 texto = texto.replace(/[^A-Za-z0-9]/g, "-");//tira caracteres especiais
 texto = texto.toLowerCase();//coloca em minusculo
 return texto;
}

Nenhum comentário: