¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

¡Acceso SAP S/4HANA desde $100!

Acceso a SAP

Como alterar o caso de strings em Perl: dicas e soluções multilíngues

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

Após o meu último post sobre um comando de uma linha em Perl para filtrar caracteres de aspas escapadas de um CSV antes de importá-lo para BI, tenho explorado mais maneiras de aproveitar o poder e a velocidade dos scripts de Perl. No entanto, nem tudo são rosas, mesmo quando se supera a impenetrabilidade da sintaxe do Perl.

A peculiaridade que encontrei hoje é a mudança de caso das strings. Perl fornece as funções lc e uc (para mudar para minúsculas e maiúsculas, respectivamente) com esse propósito. No meu script para importar um formato de registro e exportar outro, pensei que converter todos os campos para maiúsculas seria a tarefa mais simples. Mas durante os testes, parecia que o arquivo de entrada utf-8 continha alguns caracteres acentuados que uc não estava convertendo.

Felizmente, o Perl nos fornece mais de uma maneira de resolver esse problema em particular.

O primeiro passo foi escrever um script para confirmar minha suspeita.

for (32..255) {     my $c = chr($_);     my $uc = uc $c;     my $lc = uc $c;     if ( $uc eq $lc ) {          print "${_}: ${c}\t${uc}\t${lc}\n";     }}

Isso não apenas confirmou meus pensamentos de que uc não estava convertendo os caracteres acentuados, mas também me deu uma boa lista desses caracteres para consulta.

O comando que vem em nosso auxílio é tr/// ou transliterar. Em inglês, isso significa que ele troca todos os caracteres que encontra no primeiro argumento de tr pelo caractere correspondente do segundo argumento. Portanto, dado o comando tr/abc/123/, qualquer letra a na string em que o tr opera será substituída por 1, b será substituída por 2 e c por 3. Ao preencher uma chamada tr com todos os caracteres que encontramos que não estavam sendo convertidos para maiúsculas em nosso último teste (e o padrão A-Z, a-z, caso necessário), podemos construir nossa própria sub-rotina de maiúsculas.

sub upper($) {     $_ = shift;     tr/abcdefghijklmnopqrstuvwxyzšœžàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿþ/ABCDEFGHIJKLMNOPQRSTUVWXYZŠŒŽÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜݟÞ/;     return uc $_;}

Portanto, sem ter que recorrer a mexer com a configuração regional ou qualquer outra coisa que não entendo, temos uma substituição multilíngue para uc.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeconsultor.com

+1 (305) 285-8622

© 2025 Todos los derechos reservados.

Desarrollado por Prime Consultor

¡Hola! Soy Diana, asesora académica de Prime Consultor, indícame en que Academia SAP estás interesado, saludos!
Hola ¿Buscas Academias SAP?