Perl:修剪string开头和结尾的空格
是否有一个内置的function来修剪前后的空白,使trim(" hello world ") eq "hello world"
?
这是在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";
打印:
string现在是'你好'
然而,做自己很容易:
$str =~ s/^\s+//; $str =~ s/\s+$//;
这里有一个使用正则expression式的方法:
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
Perl 6将包括一个修剪function:
$string .= trim;
来源: 维基百科
没有内置trim
function,但您可以使用简单replace轻松实现自己的trim
:
sub trim { (my $s = $_[0]) =~ s/^\s+|\s+$//g; return $s; }
或在Perl 5.14及更高版本中使用非破坏性replace :
sub trim { return $_[0] =~ s/^\s+|\s+$//rg; }
根据这个perlmonk的线程 :
$string =~ s/^\s+|\s+$//g;
在这里perfaq完成howto: http ://learn.perl.org/faq/perlfaq4.html#How-do-I-strip-blank-space-from-the-beginning-end-of-a-string-
我也使用积极的前瞻来修剪文本中的重复空格:
s/^\s+|\s(?=\s)|\s+$//g
对于那些正在使用Text :: CSV的人来说,我发现这个线程,然后在CSV模块中注意到,你可以通过switch去掉它:
$csv = Text::CSV->new({allow_whitespace => 1});
逻辑是倒退的,如果你想剥离,那么你设置为1.去图。 希望这有助于任何人。
申请: s/^\s*//; s/\s+$//;
s/^\s*//; s/\s+$//;
到它。 或者使用s/^\s+|\s+$//g
如果你想成为幻想的话。
一个选项是Text :: Trim :
use Text::Trim; print trim(" example ");
不,但是可以使用s///
replace运算符和\s
空白断言获得相同的结果。