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"; }
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"; }
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"; }
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"; }
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"; }
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"; }
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