有没有内置的函数可以去除前导和尾随的空格,使得trim(" hello world ") eq "hello world"
?
有没有内置的函数可以去除前导和尾随的空格,使得trim(" hello world ") eq "hello world"
?
以下是使用正则表达式的一种方法:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6将包括一个trim函数:
$string .= trim;
来源: 维基百科
使用trim
方法可在String::Util库中获得:
编辑说明: 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+$//;
没有内置的trim
函数,但是你可以通过简单的替换操作轻松实现自己的函数:
sub trim {
(my $s = $_[0]) =~ s/^\s+|\s+$//g;
return $s;
}
sub trim {
return $_[0] =~ s/^\s+|\s+$//rg;
}
如果你正在使用 Text::CSV,我发现了这个帖子,然后注意到可以通过开关在 CSV 模块中去除它:
$csv = Text::CSV->new({allow_whitespace => 1});
逻辑反向,如果想要去除,则需将其设置为1。真是匪夷所思。希望这能对大家有所帮助。
将s/^\s*//; s/\s+$//;
应用于它。或者如果你想要更加高级,可以使用s/^\s+|\s+$//g
。
s/^\s+|\s(?=\s)|\s+$//g
s///
替换操作符和 \s
空白断言来获得同样的结果。
eq
进行测试的。 - A. Rexs/^\s+|\s+$//g;
与s/^\s*//; s/\s*$//;
。后者是(稍微)更符合惯用方式的方法,因为在这种情况下重新启动正则表达式引擎实际上比选择更快。您可以在Jeffrey Friedl的《精通正则表达式》中了解更多信息。(除非在某些新版本的Perl中已经修复了这个问题,否则请有人纠正我!) - Hugmeir