Re: [Cascavel-pm] Newbie - Uso de translation TR para converter caracteres acentuados para minúsculas
Joenio Marques
joenio em gmail.com
Sexta Outubro 21 05:25:53 PDT 2005
> Gostaria de converter strings com ou sem acentos para letras
> minúsculas. Após isto retirar caracteres não alfanuméricos.
>
> Pq o codigo abaixo não dá certo?
>
> my $str = "disse: POÇO avião!"; #Entrada
Acho que antes de mais nada voce deveria converter a string para
minusculo sem se preocupar ainda com acentos ou caracteres nao
alfanumericos. Uma das formas de fazer isso é usando a funcao lc.
$str = lc($str);
Com isso voce nao precisaria de $acentosU e $acentosL, apenas
$acentosL ou somente $acentos.
my $acentos = "áàãâéêíóôõúüç";
> #A partir daqui o codigo executa normalmente:
Ao utilizar a funcao lc acima a linha abaixo se torna desnecessaria.
> $str =~ tr/A-Z/a-z/;
> $str =~ s/[^\w\s\-$acentosU$acentosL]//g;
Talvez nao seja necessario utilizar $acentos na substituicao acima.
Ficando apenas:
$str =~ s/[^\w\s-]//g;
obs.: Dentro de lista [ ] nao é necessario utilizar \- para o caracter -
> print $srt; # SAÍDA: disse poço avião
Agora é só encontrar um meio de substituir os caracteres acentuados em
$acentos pelos seus respectivos.
Nunca fiz isso... sugiro voce apostar no chute do Alceu. locale ou utf8.
Att,
Joenio Marques
Mais detalhes sobre a lista de discussão Cascavel-pm