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