perl | Función dividir()

split() es una función de string en Perl que se usa para dividir o puede decir para cortar una string en secciones o partes más pequeñas. Hay diferentes criterios para dividir una string, como un solo carácter, una expresión regular (patrón), un grupo de caracteres o un valor indefinido, etc. Lo mejor de esta función es que el usuario puede especificar cuántas secciones dividir la string. dentro.

Sintaxis:

split /Pattern/, Expression, Limit

or

split /Pattern/, Expression

or

split /Pattern/

or

Split

En la sintaxis anterior, Patrón se especifica como una expresión regular que proporciona los criterios para dividir la string. La expresión es la string que se va a dividir. El límite es una especie de restricción que detiene la división en el patrón (n-1) que se encuentra en la string.

Valor devuelto: este método devuelve el valor en dos contextos de la siguiente manera:

In Array Context: Aquí devuelve una lista de los campos que se encuentran en Expresión. Si no se especifica ninguna expresión, devuelve $_.

En contexto escalar: aquí devuelve la cantidad de campos que se encontraron en Expresión y luego almacenó los campos en la array @_.

Hay diferentes formas de usar la función split() de la siguiente manera:

  • Dividir en un personaje
  • Dividir entre una string sin límite
  • Dividir entre una string con límite
  • Dividir en un valor indefinido
  • Dividir en una expresión regular (patrón)
  • Dividir en hash
  • División en el espacio

Dividir en un personaje

El usuario puede romper o dividir la string en diferentes caracteres como coma (,) barra invertida (\) , etc. Este tipo de división generalmente se usa cuando tiene que analizar los datos de otro programa o archivo. No use split() para analizar los archivos CSV (valores separados por comas) . Si hay comas en sus datos, utilice Text::CSV en su lugar.

Ejemplo:

# Perl program to demonstrate the splitting on character
  
#!/usr/bin/perl
use strict;
use warnings;
  
# Here character is comma(, )
my $str = 'Geeks, for, Geeks';
  
# using split() function
my @spl = split(', ', $str);
  
# displaying result using foreach loop
foreach my $i (@spl) 
{
    print "$i";
}
Producción:

GeeksforGeeks

Dividir entre strings sin ningún límite

Esto también funciona igual que la división del personaje. ¡ Aquí los datos de la string están separados por dos ! .

Ejemplo:

# Perl program to demonstrate the
# splitting among string without Limit
  
#!/usr/bin/perl
use strict;
use warnings;
  
# string which is separated by !! sign
my $str = 'GFG!!Geeks!!55!!GeeksforGeeks';
  
# using split function without Limit
my @spl = split('!!', $str);
  
# displaying string after splitting
foreach my $i (@spl) 
{
    print "$i\n";
}
Producción:

GFG
Geeks
55
GeeksforGeeks

Dividir entre strings con límite

Esto también funciona igual que la división del personaje. ¡ Aquí los datos de la string están separados por dos ! . Aquí el usuario puede restringir el número de secciones en las que se dividirá la string pasando el tercer argumento en la función de división, que será un valor entero positivo. En el siguiente ejemplo, el usuario pasa el Límite como 3 , por lo que restringirá la división de la string en 3, ¡incluso hay 4 ocurrencias de !! en la cuerda

Ejemplo:

# Perl program to demonstrate the 
# splitting on string with Limit
  
#!/usr/bin/perl
use strict;
use warnings;
  
# string which is separated by !! sign
my $str = 'GFG!!Geeks!!55!!GeeksforGeeks';
  
# using split function with Limit
my @spl = split('!!', $str, 3);
  
# displaying string after splitting
foreach my $i (@spl) 
{
    print "$i\n";
}
Producción:

GFG
Geeks
55!!GeeksforGeeks

Dividir en un valor indefinido

Si el usuario intentará dividir en un valor indefinido, la string se dividirá en cada carácter.

Ejemplo:

# Perl program to demonstrate the 
# splitting on undefined value
  
#!/usr/bin/perl
use strict;
use warnings;
  
# string to be split
my $str = 'GeeksforGeeks GFG';
  
# using split function
my @spl = split(undef, $str);
  
# displaying string after splitting
foreach my $i (@spl) 
{
    print "$i\n";
}

Producción:

G
e
e
k
s
f
o
r
G
e
e
k
s
 
G
F
G

Error de tiempo de ejecución:

Uso de valor no inicializado en la compilación de expresiones regulares en /home/38ececda726bcb7e68fb7b41eee5b8d9.pl línea 12.

Dividir en un patrón o Regex

A veces, el usuario puede querer dividir la string en un patrón (regex) o un tipo particular de carácter. Aquí usaremos las clases de caracteres especiales para hacer un patrón de dígitos (entero) de la siguiente manera:

Ejemplo:

# Perl program to demonstrate the 
# splitting on a pattern(regex)
  
#!/usr/bin/perl
use strict;
use warnings;
  
# string to be split
my $str = 'Geeks1for2Geeks';
  
# using split function
# \d+ will match one or more
# integer numbers & placed 
# between two //
my @spl = split(/\d+/, $str);
  
# displaying string after splitting
foreach my $i (@spl) 
{
    print "$i\n";
}
Producción:

Geeks
for
Geeks

Dividir en un hash

Un usuario puede dividir los datos o la string en el hash en lugar de una array. Básicamente, un hash es un par clave/valor. Antes de dividir, el usuario debe tener conocimiento sobre los hashes.

Ejemplo:

# Perl program to demonstrate the 
# splitting into the hash
  
#!/usr/bin/perl
use strict;
use warnings;
  
# hash to be split
my $has = 'GFG=1;GEEKS=2;PROGEEK=3';
  
# using split function
my %spl = split(/[=;]/, $has);
  
# after splitting displaying the values
foreach my $i (keys %spl) 
{
    print "$i:$spl{$i}\n";
}
Producción:

GFG:1
GEEKS:2
PROGEEK:3

División en el espacio

Aquí el espacio no significa solo » este espacio, sino que también incluye la nueva línea, las pestañas, etc.

Ejemplo:

# Perl program to demonstrate the 
# splitting on space
  
#!/usr/bin/perl
use strict;
use warnings;
  
# string to be splitted
my $str = "ProGeek\n\nSudo\nPlacements";
  
# using split function
my @spl = split(' ', $str);
  
# Displaying result by printing
# 'GFG' either side of the 
# value, so that user can see 
# where it split
foreach my $i (@spl)
{
    print "GFG${i}GFG\n";
}
Producción:

GFGProGeekGFG
GFGSudoGFG
GFGPlacementsGFG

Puntos importantes para recordar

  • Como función split() también devuelve el valor en contexto escalar . Entonces, para almacenar los valores de retorno, el usuario debe definir algunos valores escalares de acuerdo con la cantidad de secciones de división. En el siguiente ejemplo, habrá 4 valores después de la división, por lo que aquí el usuario definirá los 4 valores escalares y almacenará los valores de retorno.

    Ejemplo:

    # Perl program to demonstrate the 
    # splitting on string and storing 
    # values in scalars
      
    #!/usr/bin/perl
    use strict;
    use warnings;
      
    # string which is separated by !! sign
    my $str = 'GFG!Sudo!GeeksforGeeks!ProGeek';
      
    # using split function and 
    # storing values in scalars
    my ($sc1, $sc2, $sc3, $sc4) = split('!', $str);
      
    # displaying string after splitting
    print "$sc1\n$sc2\n$sc3\n$sc4";
    Producción:

    GFG
    Sudo
    GeeksforGeeks
    ProGeek
    
  • Puede haber una situación en la que el usuario no pase una string para dividir, entonces, por defecto, la función split() usará $_ y si el usuario no pasa una expresión, es decir, la string para dividir, usará ‘ ‘ (un espacio) .

    Ejemplo:

    # Perl program to demonstrate the 
    # split() function and context
      
    #!/usr/bin/perl
    use strict;
    use warnings;
      
    # using foreach loop containing string values
    foreach ('G F G', 'Geeks for Geeks')
    {
        # using split() function
        my @spl = split;
          
        # displaying values to be split
        print "Split $_:\n";
          
        foreach my $i (@spl)
        {
            print " $i\n";
        }
    }
    Producción:

    Split G F G:
     G
     F
     G
    Split Geeks for Geeks:
     Geeks
     for
     Geeks
    
  • Si el delimitador está presente al comienzo de la string que se va a dividir, el primer elemento de los valores devueltos estará vacío y se almacenará en la array. En el siguiente ejemplo, tenemos esta situación y estamos imprimiendo el valor vacío de la array resultante:

    Ejemplo:

    # Perl program to demonstrate the 
    # split() function with the Delimiter
    # at the start of the string
      
    #!/usr/bin/perl
    use strict;
    use warnings;
      
    # string containing delimiter(, ) 
    # at the starting 
    my $str = ', GFG, Geeks';
      
    # using split function
    my @spl = split(', ', $str);
      
    # printing "Array_Element: " with each 
    # returned value so that you can see
    # the empty one
    foreach my $i (@spl
    {
        print "Array_Element: $i\n";
    }
    Producción:

    Array_Element: 
    Array_Element: GFG
    Array_Element: Geeks
    
  • Si también desea mantener el delimitador en el resultado, simplemente coloque ese delimitador entre paréntesis.

    Ejemplo:

    # Perl program to demonstrate the 
    # split() function and keeping 
    # the delimiter
      
    #!/usr/bin/perl
    use strict;
    use warnings;
      
    # string to be split
    my $str = 'Geeks1for2Geeks';
      
    # using split function
    # \d+ will match one or more
    # integer numbers & placed 
    # between two // and() to 
    # keep the delimiter in result
    my @spl = split(/(\d+)/, $str);
      
    # displaying string after splitting
    foreach my $i (@spl
    {
        print "$i\n";
    }
    Producción:

    Geeks
    1
    for
    2
    Geeks
    

Publicación traducida automáticamente

Artículo escrito por Aks_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *