Есть ли встроенная функция для обрезки ведущего и конечного пробелов, так что trim(" hello world ") eq "hello world"
?
Perl: функция для обрезки строк и конечных пробелов
Ответ 1
Это доступно в String::Util с помощью метода trim
:
Примечание редактора: String::Util
не является основным модулем, но вы можете установить его из CPAN с помощью [sudo] cpan String::Util
.
use String::Util 'trim';
my $str = " hello ";
$str = trim($str);
print "string is now: '$str'\n";
печатает:
Строкатеперь "hello"
Однако достаточно легко сделать сам:
$str =~ s/^\s+//;
$str =~ s/\s+$//;
Ответ 2
Здесь один подход с использованием регулярного выражения:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6 будет включать функцию обрезки:
$string .= trim;
Источник: Wikipedia
Ответ 3
Нет встроенной функции trim
, но вы можете легко реализовать свою собственную, используя простую замену:
sub trim {
(my $s = $_[0]) =~ s/^\s+|\s+$//g;
return $s;
}
или используя неразрушающую замену в Perl 5.14 и более поздних версиях:
sub trim {
return $_[0] =~ s/^\s+|\s+$//rg;
}
Ответ 4
В соответствии с этот поток perlmonk:
$string =~ s/^\s+|\s+$//g;
Ответ 5
Завершите howto в perfaq здесь: http://learn.perl.org/faq/perlfaq4.html#How-do-I-strip-blank-space-from-the-beginning-end-of-a-string-
Ответ 6
Я также использую положительный lookahead для обрезки повторяющихся пробелов внутри текста:
s/^\s+|\s(?=\s)|\s+$//g
Ответ 7
Для тех, кто использует Text:: CSV, я нашел этот поток, а затем заметил в модуле CSV, что вы можете его отключить с помощью переключателя:
$csv = Text::CSV->new({allow_whitespace => 1});
Логика обратная в том, что если вы хотите стричь, тогда вы установите значение 1. Перейдите на фигуру. Надеюсь, это поможет любому.
Ответ 8
Применить: s/^\s*//; s/\s+$//;
к нему. Или используйте s/^\s+|\s+$//g
, если хотите быть фантазией.
Ответ 9
Один параметр Text::Trim:
use Text::Trim;
print trim(" example ");
Ответ 10
Нет, но вы можете использовать оператор подстановки s///
и утверждение \s, чтобы получить тот же результат.