trim i Perl

I nogle programmeringssprog der er en indbygget funktion trim(), som giver dig mulighed for at fjerne mellemrum fra begyndelsen, og fra sporvogn linje. For eksempel, hvis der er string ' asdf ', funktion trim() gør det til en streng 'asdf'. (ordet "trim" kan oversættes til engelsk som "cut")

I programmeringssproget Perl er ikke nogen indbygget funktion trim(), men fjerne mellemrum fra begyndelsen, og fra slutningen af den linje, der er muligt uden at det. Her er et eksempel Perl program, der fjerner den start-og slut - mellemrum i en streng:

▶ Run
#!/usr/bin/perl

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

my $str = ' asdf   ';

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

print Dumper $str;

Dette program vil vise:

$VAR1 = 'asdf';

Hvordan det virker

For at ændre den linje, der anvender et regulært udtryk. Her er et simpelt eksempel på et regulært udtryk, som ændringer line: $str =~ s/BEFORE/AFTER/;:

  • $str — du først angive den variabel, som du ønsker at anvende et regulært udtryk
  • =~ — dette operatøren anvender regulære udtryk er angivet til højre for det til, hvad er angivet på den venstre
  • s/BEFORE/AFTER/ — dette regulære udtryk udskiftning s/, der siger, at behovet for at erstatte BEFOREAFTER

I vores eksempel, er det regulære udtryk er lidt mere kompliceret: s/^\s+|\s+$//g; Den siger, at alt, hvad der møder ^\s+|\s+$ bør erstattes af en tom linje. I slutningen af den regulære udtryk er der stadig, og modifier /g, som siger du behøver ikke at stoppe efter den første udskiftning, og behovet for at erstatte globalt alle match i strengen.

^\s+|\s+$. Der er følgende brudstykker:

  • ^ betyder begyndelsen af linjen
  • \s+ — betyder, at et eller flere whitespace-tegn (\s : en plads tegn, og tegnet + : en eller flere)
  • | — betyder logisk eller
  • $ — betyder slutningen af linje

Dvs ^\s+|\s+$ betyder, at alle blanktegn er i begyndelsen af linjen eller alle blanke tegn, der er i slutningen af rækken. Og disse fandt symboler erstattet af en tom streng.

Tegn

Regulære udtryk $str =~ s/^\s+|\s+$//g; fjerner fra variabel ikke kun de mellemrum i starten og slutningen, og fjerner alle blanktegn. Fanen karakter (\t), bindestreg tegn på næste linje (\n), alt dette vil blive fjernet. Her er et eksempel, hvor det viser:

▶ 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;

I Unicode-der er mange tegn, der indikerer rum. \sbetyder nogen af disse tegn.

Brug af biblioteker

Der er særlige biblioteker, der giver dig mulighed for at fjerne den oprindelige og afsluttende mellemrum fra en streng, for eksempel:

Men disse biblioteker, der ikke sendes med Perl, de nødt til at sætte ud. Der er situationer, at det er mere bekvemt ikke til at bruge biblioteket, og til at skrive din egen kode til at fjerne mellemrum fra begyndelsen, og fra slutningen af linjen.

Andre artikler