Início > Funções > Split: Dividindo uma String

Split: Dividindo uma String

Uma tarefa muito comum quando utilizamos o Perl para manipular textos é o de separar e dividir uma String – seja ela uma palavra ou uma frase. O split é uma função nativa do Perl que realiza com extrema eficiência esta tarefa. Dado uma String e uma condição, ele realiza uma varredura na String a procura de algo que corresponda o que for definido na regex da condição. Conforme vão sendo encontrados resultados, o split vai retornando os mesmos. Veja sua sintaxe:

($retorno1,$retorno2) = split (/[condição]/,$frase,$limite);

  • As variáveis $retorno1 e $retorno2 receberão os dois dados que forem separados, cada um para a respectiva variável.
  • A condição pode ser expressa em forma de String ou expressão regular (regex) (Veja a tabela de regex).
  • O limite é um parâmetro opcional que só precisa ser definido se for necessário limitar o número de retornos.

No split podemos especificar quantas variáveis de retorno quisermos. Se o número de dados retornados for indefinido, podemos definiro retorno para uma array, da seguinte forma:

(@retornos) = split (/[condição]/,$frase,$limite);

Vejamos alguns exemplos práticos sobre como funciona o split:

$frase = “Campinas – SP”;
($cidade,$estado) = split(” – “,$frase); # Divide a frase por ” – ”

print “Eu moro em $cidade que fica no estado de $estado”;

O exemplo acima produzirá o seguinte resultado:

Eu moro em Campinas que fica no estado de SP


Podemos também usar regex para expressar as condições.
Digamos que temos uma String e queremos separá-la pelos números contidos nela.
Podemos usar a regex d+ que identifica os numeros contidos na String. Veja um exemplo:

$frase = “ABC1DEF2GHI”;
($div1,$div2,$div3) = split(/d+/,$frase,3);

print $div1.”n”;   print $div2.”n”;   print $div3.”n”;

O código acima mostrará o seguinte na tela:

ABC DEF GHI


Como último exemplo, podemos fazer uma separação de vários ítens de uma String.
Vamos pegar uma frase longa que não sabemos o número de retornos.

$frase = “O-rato-roeu-a-roupa-do-Rei-de-Roma”;
(@novaFrase) = split(/-/,$frase); # O retorno é feito na array @novaFrase

print $novaFrase[0].”n”;
print $novaFrase[1].”n”;
print $novaFrase[2].”n”;
(…)
print $novaFrase[8].”n”;

Isto irá separar a frase por e produzirá o seguinte resultado na tela:

O rato roeu a roupa do Rei de Roma

Note que não informamos ao split o número de variáveis que seriam retornadas e nem mesmo o limite, pois  tudo que ele for encontrando ele já vai incluindo na array especificada.
Para obtermos o valor, basta acessar o array informando suas respectivas posições para encontrar os ítens retornados.

Enfim, o split é certamente uma das funções mais importantes do Perl, e um fator que faz de nossa linguagem ser a melhor quando o assunto é manipulação de texto.

Até a próxima!

  1. T.C.M
    4 maio, 2011 às 10:19 pm

    E caso eu tenha uma frase que é separada por -, por exemplo: ABC-DEF-GHI e queira uma frase final assim: ABC,DEF e GHI. Como eu posso fazer utilizando a função split?

    • Whitesnake
      6 maio, 2011 às 1:11 am

      olá. Vc pode fazer assim:

      ($a1,$a2,$a3) = split(/\-/,$string);

      abs.

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: