怎么操作Perl删除前导和拖尾空白

来源:爱站网时间:2021-12-09编辑:网友分享
怎么操作Perl删除前导和拖尾空白?面对这个问题,是不是还有很多小白是不知道答案的,没关系呀,有爱站技术小编在,会给大家一定的解答的,这不,今天带来的这篇文章主要介绍了Perl删除前导和拖尾空白(删除左右空格、空白字符),本文给出了多个方法实现解决这个需求,需要的朋友可以参考下

怎么操作Perl删除前导和拖尾空白?面对这个问题,是不是还有很多小白是不知道答案的,没关系呀,有爱站技术小编在,会给大家一定的解答的

其它一些编程语言中,有函数ltrim和rtrim分别用于从字符串开头和末尾删除空格和制表符。 也有的提供了函数trim来删除字符串两端的空白字符。Perl里没这些函数因为简单的正则表达式替换就能实现这个目的(不过我确信CPAN有很多模块实现了这些函数)。事实上这太简单了以至于成了帕金森琐碎定理里的一个显著主题。

左侧整理

ltrim或者lstrip从字符串左侧删除空白字符:

 

$str =~ s/^\s+//;


从字符串开头^开始匹配一个或者多个空白字符(\s+),并将之替换成空字符。

 

右侧整理

rtrim或者rstrip从字符串右侧删除空白字符:

 

$str =~ s/\s+$//;


匹配一个或者多个空白字符(\s+)直到字符串末尾($),并将之替换成空字符。

 

整理两端

trim删除字符串两端的空白字符:

 

$str =~ s/^\s+|\s+$//g


将上面两个正则表达式用或记号|连起来,并在最后增加/g用以全局地执行替换操作(反复多次)。

 

封装在函数里

如果你不想在代码中看到这些结构,你可以在代码里添加这些函数:

 

sub ltrim { my $s = shift; $s =~ s/^\s+//;       return $s };
sub rtrim { my $s = shift; $s =~ s/\s+$//;       return $s };
sub  trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };


使用时像这样:

 

 


my $z = " abc ";
printf "\n", trim($z);   #
printf "\n", ltrim($z);  #
printf "\n", rtrim($z);  #
String::Util

 

String::Util

要是实在不想拷贝那些东西,你可以安装一个模块。

例如String::Util提供了函数trim,你可以如下使用:

 

use String::Util qw(trim);

 

my $z = " abc ";
printf "\n", trim( $z );              #
printf "\n", trim( $z, right => 0 );  #
printf "\n", trim( $z, left  => 0 );   #


默认它整理两侧,你不需要提供参数。 我觉得,自己实现ltrim和rtrim会清晰些。

Text::Trim

另一个模块Text::Trim提供了3个函数,但是它极度采纳了Perl风格的写法,可能到了有些危险的地步。

如果你调用它并将返回值用在print语句或者赋给一个变量,它会返回整理过的字符串,并保持原始字符串不变。

 

use Text::Trim qw(trim);

 

my $z = " abc ";
printf "\n", trim($z);  #
printf "\n", $z;       #


另一方面,如果你在空白上下文调用它,亦即不使用返回值,trim函数就会修改参数,产生类似chomp的行为。

 


use Text::Trim qw(trim);

 

my $z = " abc ";
trim $z;
printf "\n", $z;       #

以上内容就是爱站技术频道小编为大家分享的怎么操作Perl删除前导和拖尾空白,看完以上分享之后,大家应该都知道怎么操作Perl删除前导和拖尾空白了吧。

上一篇:Perl List::Util模块使用实例

下一篇:求Perl的Mail::POP3Client模块和Gmail通信实例,安排!

您可能感兴趣的文章

相关阅读

查看更多 >

热门软件源码

最新软件源码下载