Existe-t-il une fonction intégrée pour ajuster les espaces de début et de fin tels que trim(" hello world ") eq "hello world"
?
Voici une approche utilisant une expression régulière:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6 inclura une fonction de trim:
$string .= trim;
Source: Wikipedia
Ceci est disponible dans String :: Util avec la méthode trim
:
Note de l'éditeur: String::Util
n'est pas un module de base, mais vous pouvez l'installer à partir de CPAN avec [Sudo] cpan String::Util
.
use String::Util 'trim';
my $str = " hello ";
$str = trim($str);
print "string is now: '$str'\n";
impressions:
la chaîne est maintenant 'bonjour'
Cependant, il est assez facile de faire soi-même:
$str =~ s/^\s+//;
$str =~ s/\s+$//;
Il n'y a pas de fonction intégrée trim
, mais vous pouvez facilement implémenter la vôtre en utilisant une simple substitution:
sub trim {
(my $s = $_[0]) =~ s/^\s+|\s+$//g;
return $s;
}
ou en utilisant substitution non destructive dans les versions 5.14 et ultérieures de Perl:
sub trim {
return $_[0] =~ s/^\s+|\s+$//rg;
}
Selon le fil de ce perlmonk :
$string =~ s/^\s+|\s+$//g;
Complétez le howto dans la recherche ici: http://learn.Perl.org/faq/perlfaq4.html#How-do-I-strip-blank-space-from-the-beginning- fin de chaîne -
Pour ceux qui utilisent Text :: CSV, j'ai trouvé ce fil de discussion et puis remarqué dans le module CSV que vous pouviez le supprimer via un commutateur:
$csv = Text::CSV->new({allow_whitespace => 1});
La logique est inversée en ce sens que si vous souhaitez supprimer, vous devez définir la valeur 1. Go figure. J'espère que cela aide quelqu'un.
Une option est Text :: Trim :
use Text::Trim;
print trim(" example ");
J'utilise aussi un lookahead positif pour couper les espaces répétés à l'intérieur du texte:
s/^\s+|\s(?=\s)|\s+$//g
Appliquer: s/^\s*//; s/\s+$//;
à elle. Ou utiliser s/^\s+|\s+$//g
si vous voulez être chic.