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
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:
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/;
:
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:
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.
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
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. \s
oznacza
każdy z tych znaków.
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.