是否有内置函数来修剪前导和尾随空格,以便trim(" hello world ") eq "hello world"
?
答案 0 :(得分:82)
以下是使用正则表达式的一种方法:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6将包含一个修剪功能:
$string .= trim;
来源:Wikipedia
答案 1 :(得分:80)
使用trim
方法在String::Util中可以使用此功能:
编者注:String::Util
不是核心模块,但您可以使用[sudo] cpan String::Util
从CPAN安装。
use String::Util 'trim';
my $str = " hello ";
$str = trim($str);
print "string is now: '$str'\n";
打印:
字符串现在是'你好'
然而,自己做起来很容易:
$str =~ s/^\s+//;
$str =~ s/\s+$//;
答案 2 :(得分:26)
没有内置的trim
功能,但您可以使用简单的替换轻松实现自己的功能:
sub trim {
(my $s = $_[0]) =~ s/^\s+|\s+$//g;
return $s;
}
或在Perl 5.14及更高版本中使用non-destructive substitution:
sub trim {
return $_[0] =~ s/^\s+|\s+$//rg;
}
答案 3 :(得分:9)
$string =~ s/^\s+|\s+$//g;
答案 4 :(得分:8)
答案 5 :(得分:3)
我还使用正向前瞻来修剪文本中的重复空格:
s/^\s+|\s(?=\s)|\s+$//g
答案 6 :(得分:3)
一个选项是Text::Trim:
use Text::Trim;
print trim(" example ");
答案 7 :(得分:3)
对于那些使用Text :: CSV的人,我找到了这个帖子,然后在CSV模块中注意到你可以通过开关将其剥离出来:
$csv = Text::CSV->new({allow_whitespace => 1});
逻辑是向后的,如果你想剥离,那么你设置为1.去图。希望这对任何人都有帮助。
答案 8 :(得分:2)
申请:s/^\s*//; s/\s+$//;
。如果你想要花哨,可以使用s/^\s+|\s+$//g
。
答案 9 :(得分:-4)
不,但您可以使用s///
替换运算符和\s
空格断言来获得相同的结果。