Skip to content

Instantly share code, notes, and snippets.

@marioluan
Created October 10, 2013 18:27
Show Gist options
  • Star 67 You must be signed in to star a gist
  • Fork 23 You must be signed in to fork a gist
  • Save marioluan/6923123 to your computer and use it in GitHub Desktop.
Save marioluan/6923123 to your computer and use it in GitHub Desktop.
Funcao marota para remover acentos de strings. Foi utilizado expressao regular em cima de caracteres representados na base hexadecimal.
/**
* Remove acentos de caracteres
* @param {String} stringComAcento [string que contem os acentos]
* @return {String} [string sem acentos]
*/
function removerAcentos( newStringComAcento ) {
var string = newStringComAcento;
var mapaAcentosHex = {
a : /[\xE0-\xE6]/g,
e : /[\xE8-\xEB]/g,
i : /[\xEC-\xEF]/g,
o : /[\xF2-\xF6]/g,
u : /[\xF9-\xFC]/g,
c : /\xE7/g,
n : /\xF1/g
};
for ( var letra in mapaAcentosHex ) {
var expressaoRegular = mapaAcentosHex[letra];
string = string.replace( expressaoRegular, letra );
}
return string;
}
@lelotnk
Copy link

lelotnk commented Oct 23, 2014

Fiz uma alteração para aceitar maiúsculas também.

var mapaAcentosHex = {
a : /[\xE0-\xE6]/g,
A : /[\xC0-\xC6]/g,
e : /[\xE8-\xEB]/g,
E : /[\xC8-\xCB]/g,
i : /[\xEC-\xEF]/g,
I : /[\xCC-\xCF]/g,
o : /[\xF2-\xF6]/g,
O : /[\xD2-\xD6]/g,
u : /[\xF9-\xFC]/g,
U : /[\xD9-\xDC]/g,
c : /\xE7/g,
C : /\xC7/g,
n : /\xF1/g,
N : /\xD1/g,
};

@jesobreira
Copy link

Usando esse script com a alteração do @lelotnk, fiz uma função para criar slugs em JS: https://gist.github.com/jesobreira/d769aab503847e014b3c

@byellokore
Copy link

Obrigado pela função. Poderiam me dizer onde encontrar os valores de referência para cada letra, para usar na expressão regular
?

@limabetalabs
Copy link

VLW!!!!

@hertz1
Copy link

hertz1 commented Aug 11, 2015

Uma versão mais compacta, com apenas 2 linhas:
https://gist.github.com/hertz1/686e90aeffb4d166ab1a

@insign
Copy link

insign commented Sep 22, 2015

@hertz1 Valeu.

@pablohpsilva
Copy link

Muito foda! Obrigado a todos dessa gist

@vfrez
Copy link

vfrez commented Feb 23, 2016

Vlw cara Muito boa

@rndnunes
Copy link

Muito boa cara, valeu!
Precisei de algo parecido recentemente, mas eu precisava gerar classes, pegar o título de um produto e gerar uma classe com esse título, no caso removendo acentos e trocando espaços por "-", usei sua dica e a do @lelotnk, vou deixar aqui caso mais alguém precise:

String.prototype.GeraClass = function() {
var string = this.replace(/^\s+|\s+$/g, "");
var mapaAcentosHex = {
a : /[\xE0-\xE6]/g,
A : /[\xC0-\xC6]/g,
e : /[\xE8-\xEB]/g,
E : /[\xC8-\xCB]/g,
i : /[\xEC-\xEF]/g,
I : /[\xCC-\xCF]/g,
o : /[\xF2-\xF6]/g,
O : /[\xD2-\xD6]/g,
u : /[\xF9-\xFC]/g,
U : /[\xD9-\xDC]/g,
c : /\xE7/g,
C : /\xC7/g,
n : /\xF1/g,
N : /\xD1/g
};

for ( var letra in mapaAcentosHex ) {
    var expressaoRegular = mapaAcentosHex[letra];
    string = string.replace( expressaoRegular, letra );
}

string = string.split(' ').join('-').toLowerCase();

return string;

}

//String de teste:
'têsÇâõ Testè'.GeraClass()

@Helmesvs
Copy link

Muito foda. Parabéns!

@luizpaulo165
Copy link

Alguém pode add uma para remover as virgulas?!

Copy link

ghost commented Feb 24, 2017

Muito bom, me ajudou muito. Parabéns!

@diefferson
Copy link

@nikoz84
Copy link

nikoz84 commented Sep 7, 2017

Tem outra opção

CREATE EXTENSION unaccent;

SELECT unaccent('èéêë comunicação');

RETORNA
"eeee comunicacao";

@micheltlutz
Copy link

boa @diefferson alguém tem para Golang?

@alefhsousa
Copy link

com ES6 fica mais fácil fazer essa alteração:

function removerAcentos(s) {
  return s.normalize('NFD').replace(/[\u0300-\u036f]/g, "")
}

/[\u0300-\u036f]/g esse trecho de código é uma expressão regular que pega o range dos acentos: ´, ~, ^

@JulioBandeira
Copy link

Muito bom, valewzão!!!

@dev-alves
Copy link

Muito bom! Parabéns!
Era o que eu estava precisando haha obrigado!

@lennonfuston
Copy link

com ES6 fica mais fácil fazer essa alteração:

function removerAcentos(s) {
  return s.normalize('NFD').replace(/[\u0300-\u036f]/g, "")
}

/[\u0300-\u036f]/g esse trecho de código é uma expressão regular que pega o range dos acentos: ´, ~, ^

Melhor solução possível!

@tcordeirofx
Copy link

tcordeirofx commented Jan 16, 2019

Não quero ser perfeccionista, a direção da solução está perfeita, porém faltaria esta solução remover a acentuação apenas, sem a composição da letra => `^~ ...

@tcordeirofx
Copy link

Não sei se é a melhor forma, mas atendeu aqui pra mim!

function removerAcentos(s) { return s.normalize('NFD').replace(/[\u0300-\u036f|\u00b4|\u0060|\u005e|\u007e]/g, "") }

@Onnion
Copy link

Onnion commented Oct 16, 2019

com ES6 fica mais fácil fazer essa alteração:

function removerAcentos(s) {
  return s.normalize('NFD').replace(/[\u0300-\u036f]/g, "")
}

/[\u0300-\u036f]/g esse trecho de código é uma expressão regular que pega o range dos acentos: ´, ~, ^

Obrigado (y)

@alexandregyn
Copy link

alexandregyn commented Nov 18, 2019

Muito obrigado ajudou de mais ainda mais os outro modelos abordado pela pessoal. (y)

@mauricioslk
Copy link

mauricioslk commented Mar 20, 2020

Ajudou bastante, valeu.

eu precisava deixar um texto simples com traços ai usei um replace e toLowerCase() junto
var replace = nameSH.replace(/\ /g, "-");
var finalString = replace.toLowerCase();

para-o-texto-ficar-assim

@adryssonlima
Copy link

Salvou aqui! Muito boa!

@geovanesilva
Copy link

Pessoal, cuidado com a função abaixo, não é compatível com android webview nem internet explorer

s.normalize('NFD')

Se o seu site for aberto através de um webview (pode ser aberto em apps onde seus anúncios aparecem)

Valide a existência da função em strings:

if("".normalize){ seuTexto.normalize('NFD')... }

@ogiovannyoliveira
Copy link

Usando esse script com a alteração do @lelotnk, fiz uma função para criar slugs em JS: https://gist.github.com/jesobreira/d769aab503847e014b3c

Me ajudou demais essa função! só tive que passá-la para Typescript... segue o link, caso alguém precise:
https://gist.github.com/GiovannyLucas/8af0365b9978c667f875e34741d49818

@angelamf
Copy link

angelamf commented Sep 4, 2020

E se eu quiser remover o conteúdo de uma table html inteira? Como que faço?

@jcmartim
Copy link

Muito bom, ajudou bastante!

@cesartagplus
Copy link

Muito Obrigado!

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