Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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;
}
@micheltlutz

This comment has been minimized.

Copy link

@micheltlutz micheltlutz commented Sep 21, 2014

para & por e
e espaço por - caso queiram também:

e : /[\xE8-\xEB&(?!amp;)]/g,
'-' : /\s/g

@CesarLuizTirolla

This comment has been minimized.

Copy link

@CesarLuizTirolla CesarLuizTirolla commented Oct 14, 2014

Excelente!

@lelotnk

This comment has been minimized.

Copy link

@lelotnk 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

This comment has been minimized.

Copy link

@jesobreira jesobreira commented Jan 4, 2015

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

This comment has been minimized.

Copy link

@byellokore byellokore commented Jun 15, 2015

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

@limabetalabs

This comment has been minimized.

Copy link

@limabetalabs limabetalabs commented Jun 20, 2015

VLW!!!!

@hertz1

This comment has been minimized.

Copy link

@hertz1 hertz1 commented Aug 11, 2015

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

@insign

This comment has been minimized.

Copy link

@insign insign commented Sep 22, 2015

@hertz1 Valeu.

@pablohpsilva

This comment has been minimized.

Copy link

@pablohpsilva pablohpsilva commented Nov 20, 2015

Muito foda! Obrigado a todos dessa gist

@vfrez

This comment has been minimized.

Copy link

@vfrez vfrez commented Feb 23, 2016

Vlw cara Muito boa

@rndnunes

This comment has been minimized.

Copy link

@rndnunes rndnunes commented Mar 17, 2016

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

This comment has been minimized.

Copy link

@Helmesvs Helmesvs commented Dec 31, 2016

Muito foda. Parabéns!

@luizpaulo165

This comment has been minimized.

Copy link

@luizpaulo165 luizpaulo165 commented Jan 2, 2017

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

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Feb 24, 2017

Muito bom, me ajudou muito. Parabéns!

@diefferson

This comment has been minimized.

Copy link

@diefferson diefferson commented Apr 11, 2017

@nikoz84

This comment has been minimized.

Copy link

@nikoz84 nikoz84 commented Sep 7, 2017

Tem outra opção

CREATE EXTENSION unaccent;

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

RETORNA
"eeee comunicacao";

@micheltlutz

This comment has been minimized.

Copy link

@micheltlutz micheltlutz commented Mar 12, 2018

boa @diefferson alguém tem para Golang?

@alefhsousa

This comment has been minimized.

Copy link

@alefhsousa alefhsousa commented Apr 16, 2018

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

This comment has been minimized.

Copy link

@JulioBandeira JulioBandeira commented Jun 15, 2018

Muito bom, valewzão!!!

@dev-alves

This comment has been minimized.

Copy link

@dev-alves dev-alves commented Sep 3, 2018

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

@lennonfuston

This comment has been minimized.

Copy link

@lennonfuston lennonfuston commented Oct 25, 2018

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

This comment has been minimized.

Copy link

@tcordeirofx 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

This comment has been minimized.

Copy link

@tcordeirofx tcordeirofx commented Jan 16, 2019

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

This comment has been minimized.

Copy link

@Onnion 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

This comment has been minimized.

Copy link

@alexandregyn alexandregyn commented Nov 18, 2019

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

@mauricioslk

This comment has been minimized.

Copy link

@mauricioslk 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

This comment has been minimized.

Copy link

@adryssonlima adryssonlima commented Apr 7, 2020

Salvou aqui! Muito boa!

@geovanesilva

This comment has been minimized.

Copy link

@geovanesilva geovanesilva commented Jun 24, 2020

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')... }

@GiovannyLucas

This comment has been minimized.

Copy link

@GiovannyLucas GiovannyLucas commented Aug 4, 2020

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

This comment has been minimized.

Copy link

@angelamf angelamf commented Sep 4, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.