trim en Perl

Dans certains langages de programmation, il ya une fonction intégrée trim()qui vous permet de supprimer les espaces de début et de conca de la ligne. Par exemple, si il ya un la chaîne de ' asdf ', alors la fonction trim() fera d'elle une chaîne de 'asdf'. (le mot "trim" qui peut se traduire de l'anglais comme "élagage")

Dans le langage de programmation Perl aucune fonction intégrée trim(), mais supprimer les espaces de début et de fin de chaîne n'est possible sans elle. Voici un exemple de programme Perl, qui emporte le début et la fin les lacunes de la chaîne:

▶ Run
#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use Data::Dumper;

my $str = ' asdf   ';

$str =~ s/^\s+|\s+$//g;

print Dumper $str;

Ce programme affiche:

$VAR1 = 'asdf';

Comment cela fonctionne

Pour changer le texte utilise l'expression régulière. Voici un exemple simple d'une expression régulière, qui modifie ligne: $str =~ s/BEFORE/AFTER/;:

  • $str — d'abord on indique la variable à laquelle vous souhaitez appliquer une expression régulière
  • =~ — cet opérateur applique une expression régulière, qui est indiqué à droite de lui à ce qui est indiqué sur la gauche
  • s/BEFORE/AFTER/ — c'est l'expression de remplacement s/, il dit qu'il faut remplacer BEFORE sur AFTER

Dans notre exemple, l'expression régulière est un peu plus compliqué: s/^\s+|\s+$//g; Ici, on dit que tout ce qui correspond à ^\s+|\s+$ a besoin de remplacer le vide de la ligne. À la fin de l'expression régulière est un modificateur /g, qui dit qui n'a pas besoin de s'arrêter après le premier remplacement, mais il faut globalement remplacer tous coïncidence en ligne.

^\s+|\s+$. Il ya les fragments:

  • ^ — signifie le début de la ligne
  • \s+ — désigne un ou plus d'espace symbole (\s signifie espace symbole et le signe + désigne un ou plus)
  • | — signifie ou logique
  • $ — signifie la fin de la ligne

C'est-à-dire ^\s+|\s+$ signifie: tous les espaces qui se trouvent au début de la ligne tous les espaces qui se trouvent à la fin de la ligne. Et ces symboles trouvés sont remplacés par une chaîne vide.

Caractères

L'expression régulière $str =~ s/^\s+|\s+$//g; retire de la variable non seulement les espaces au début et à la fin, et supprime tous les espaces. Le caractère de tabulation (\t), le symbole de la migration sur une autre chaîne (\n), tout cela sera nettoyé. Voici un exemple dans lequel cela se voit:

▶ Run
#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use Data::Dumper;

my $str = " \t \n asdf \n\n \t ";

$str =~ s/^\s+|\s+$//g;

print Dumper $str;

En Unicode, il y a beaucoup de caractères qui signifient des espaces. \ssignifie ces caractères.

L'utilisation de бибилиотек

Il existe des bibliothèques qui permettent de nettoyer les initiales de et les espaces de fin de chaîne, par exemple:

Mais ces bibliothèques ne sont pas livrés avec Perl, il faut les mettre en option. Il y a des situations qu'il est plus commode de ne pas utiliser la bibliothèque et vous-même écrire du code pour effacer des espaces de début et de fin de chaîne.

Autres articles