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; 

来源: 维基百科

没有内置trimfunction,但您可以使用简单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空白断言获得相同的结果。