我不明白为什么perl chomp
没有删除我的字符串周围的空白。我甚至尝试过两次叫chomp,例如,使用bash:
$ perl -e 'use 5.22.4; chomp(my $extra=" lol "); chomp($extra); say "<$extra>"'
< lol >
我真的希望得到
<lol>
答案 0 :(得分:7)
Chomp只从字符串末尾删除行结尾(可以用$/
变量设置)。它没有修剪弦乐。 Perl没有内置修剪功能。我通常会拼出两个替换词:
s/^\s+//, s/\s+$// for $string;
进一步阅读:
答案 1 :(得分:4)
删除所有空格:
$string =~ s/\s+//g;
左侧修剪:
$string =~ s/^\s+//;
右边修剪:
$string =~ s/\s+$//;
左右修剪:
$string =~ s/^\s+|\s+$//g
然后我们也可以构建修剪功能。这有助于更大的脚本,你不想每次都写完整的替换字符串,我们写一次,然后使用函数来完成工作。
这个简单的函数可以在任何脚本中用作trim($string);
sub trim {
$_[0] =~ s/^\s+|\s+$//g;
}
与完整的空白条相似。
sub full_strip {
$_[0] =~ s/\s+//g;
}
脚本中的:
use strict;
use warnings;
my $string = " this is line with leading and trailing whitespaces ";
my $string2 = " another one of those lines ";
trim($string);
trim($string2);
print "$string\n";
print "$string2\n";
full_strip($string);
full_strip($string2);
print "$string\n";
print "$string2\n";
sub trim {
$_[0] =~ s/^\s+|\s+$//g;
}
sub full_strip {
$_[0] =~ s/\s+//g;
}
答案 2 :(得分:0)
$string=~s/^\s+|\s+$//g;
这适用于要删除开始和结束空格的任何通用字符串。