Removendo acentos / diacríticos da string enquanto preserva outros caracteres especiais (tentei mb_chars.normalize e iconv)
Existe um muitosimilar question já. Uma das soluções usa código como este:
string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s
O que faz maravilhas, até você notar que também remove espaços, pontos, traços e quem sabe o que mai
Não tenho muita certeza de como o primeiro código funciona, mas poderia ser feito para removers acentos? Ou, pelo menos, receber uma lista de caracteres para preservar? Meu conhecimento sobre regexps é pequeno, mas tentei (sem sucesso):
/[^\-x00-\x7F]/n # So it would leave the dash alone
Estou prestes a fazer algo assim:
string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
(/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s
Atroz? Sim..
Eu também tentei:
iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"
Ajuda por favor