trim w Perl

W niektórych językach programowania istnieje wbudowana funkcja trim()który pozwala usunąć spacje z początku i z conca wiersza. Na przykład, jeśli istnieje wiersz ' asdf ', funkcja trim() uczyni z niej wiersz 'asdf'. (słowo "trim" można przetłumaczyć z angielskiego jako "przycinać")

W języku programowania Perl nie ma wbudowanej funkcji trim(), ale usuń spacje z początku i z końca wiersza można i bez niej. Oto przykład Perl program, który usuwa początkowe i końcowe spacje z tekstu:

▶ Run
#!/usr/bin/perl

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

my $str = ' asdf   ';

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

print Dumper $str;

Ten program wypisze na ekran:

$VAR1 = 'asdf';

Jak to działa

Do zmiany wiersza jest używane wyrażenie regularne. Oto bardziej prosty przykład wyrażenia regularnego, który zmienia wiersz: $str =~ s/BEFORE/AFTER/;:

  • $str — najpierw jest zmienna do której chcesz zastosować wyrażenie regularne
  • =~ — ten operator stosuje wyrażenie regularne, które podano na prawo od niego do tego co jest podane po lewej stronie
  • s/BEFORE/AFTER/ — jest to wyrażenie regularne wymiany s/, mówi że trzeba wymienić BEFORE na AFTER

W naszym przykładzie wyrażenie regularne nieco trudniejsze: s/^\s+|\s+$//g; Tu mówi się, że wszystko, co odpowiada ^\s+|\s+$ trzeba wymienić na nową, pustą linijkę. W końcu wyrażenia regularnego jeszcze istnieje i modyfikator /g, który mówi że nie trzeba się zatrzymywać po pierwszej wymianie, a trzeba globalnie wymienić wszystkie okoliczności w wierszu.

^\s+|\s+$. Tu jest następujące fragmenty:

  • ^ — oznacza początek wiersza
  • \s+ — oznacza jeden lub więcej odstęp (\s oznacza odstęp, a znak + oznacza jeden lub więcej)
  • | — oznacza logiczne lub
  • $ — oznacza koniec wiersza

Czyli ^\s+|\s+$ oznacza: wszystkie znaki spacji które znajdują się na początku wiersza lub wszystkie znaki spacji, które znajdują się na końcu wiersza. I te znalezione znaki są zastępowane na pusty ciąg znaków.

Znaki

Wyrażenie regularne $str =~ s/^\s+|\s+$//g; sprząta ze zmiennej nie tylko spacje na początku i na końcu, a usuwa wszystkie znaki spacji. Znak tabulacji (\t), symbol przeniesienia na inną linię (\n), to wszystko będzie posprzątane. Oto przykład na którym to widać:

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

W Unicode jest wiele znaków, które oznaczają spacje. \soznacza każdy z tych znaków.

Korzystanie z бибилиотек

Istnieją specjalne biblioteki, które pozwalają usunąć początkowe i końcowe spacje z tekstu, np.:

Ale te biblioteki nie są dostarczane wraz z Perl, należy je umieścić dodatkowo. Zdarzają się sytuacje, że wygodniej jest nie korzystać z biblioteki, a samodzielnie napisać kod dla odcinając spacji z początku i z końca wiersza.

Inne artykuły