源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Perl删除前导和拖尾空白(删除左右空格、空白字符)

  • 时间:2022-03-23 15:23 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Perl删除前导和拖尾空白(删除左右空格、空白字符)
其它一些编程语言中,有函数ltrim和rtrim分别用于从字符串开头和末尾删除空格和制表符。 也有的提供了函数trim来删除字符串两端的空白字符。Perl里没这些函数因为简单的正则表达式替换就能实现这个目的(不过我确信CPAN有很多模块实现了这些函数)。事实上这太简单了以至于成了帕金森琐碎定理里的一个显著主题。 [b]左侧整理[/b] ltrim或者lstrip从字符串左侧删除空白字符:
[u]复制代码[/u] 代码如下:
$str =~ s/^\s+//;
从字符串开头^开始匹配一个或者多个空白字符(\s+),并将之替换成空字符。 [b]右侧整理[/b] rtrim或者rstrip从字符串右侧删除空白字符:
[u]复制代码[/u] 代码如下:
$str =~ s/\s+$//;
匹配一个或者多个空白字符(\s+)直到字符串末尾($),并将之替换成空字符。 [b]整理两端[/b] trim删除字符串两端的空白字符:
[u]复制代码[/u] 代码如下:
$str =~ s/^\s+|\s+$//g
将上面两个正则表达式用或记号|连起来,并在最后增加/g用以全局地执行替换操作(反复多次)。 [b]封装在函数里[/b] 如果你不想在代码中看到这些结构,你可以在代码里添加这些函数:
[u]复制代码[/u] 代码如下:
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 };
使用时像这样:
[u]复制代码[/u] 代码如下:
my $z = " abc "; printf "<%s>\n", trim($z);   # <abc> printf "<%s>\n", ltrim($z);  # <abc > printf "<%s>\n", rtrim($z);  # < abc> String::Util
[b]String::Util[/b] 要是实在不想拷贝那些东西,你可以安装一个模块。 例如String::Util提供了函数trim,你可以如下使用:
[u]复制代码[/u] 代码如下:
use String::Util qw(trim); my $z = " abc "; printf "<%s>\n", trim( $z );              # <abc> printf "<%s>\n", trim( $z, right => 0 );  # <abc > printf "<%s>\n", trim( $z, left  => 0 );   # < abc>
默认它整理两侧,你不需要提供参数。 我觉得,自己实现ltrim和rtrim会清晰些。 [b]Text::Trim[/b] 另一个模块Text::Trim提供了3个函数,但是它极度采纳了Perl风格的写法,可能到了有些危险的地步。 如果你调用它并将返回值用在print语句或者赋给一个变量,它会返回整理过的字符串,并保持原始字符串不变。
[u]复制代码[/u] 代码如下:
use Text::Trim qw(trim); my $z = " abc "; printf "<%s>\n", trim($z);  # <abc> printf "<%s>\n", $z;       # < abc >
另一方面,如果你在空白上下文调用它,亦即不使用返回值,trim函数就会修改参数,产生类似chomp的行为。
[u]复制代码[/u] 代码如下:
use Text::Trim qw(trim); my $z = " abc "; trim $z; printf "<%s>\n", $z;       # <abc>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部