分类分类
更新时间:2026-03-29 00:20:07作者:zhao
其它一些编程语言中,有函数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 "<%s>n", trim($z); # <abc>
printf "<%s>n", ltrim($z); # <abc >
printf "<%s>n", rtrim($z); # < abc>
String::Util
String::Util
要是实在不想拷贝那些东西,你可以安装一个模块。
例如String::Util提供了函数trim,你可以如下使用:
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会清晰些。
Text::Trim
另一个模块Text::Trim提供了3个函数,但是它极度采纳了Perl风格的写法,可能到了有些危险的地步。
如果你调用它并将返回值用在print语句或者赋给一个变量,它会返回整理过的字符串,并保持原始字符串不变。
use Text::Trim qw(trim);
my $z = " abc ";
printf "<%s>n", trim($z); # <abc>
printf "<%s>n", $z; # < abc >
另一方面,如果你在空白上下文调用它,亦即不使用返回值,trim函数就会修改参数,产生类似chomp的行为。
use Text::Trim qw(trim);
my $z = " abc ";
trim $z;
printf "<%s>n", $z; # <abc>
相关
王道三国策略游戏380.18 MBv0.0.12026-03-28
下载刮个爽手机版休闲益智186.96 MBv1.0.282026-03-28
下载龙符天祭策略游戏756.03 Mv22026-03-28
下载入魂一番赏app网上购物106.66 Mv4.3.52026-03-28
下载童话师经营养成504.02 Mv1.1.52026-03-28
下载Bebo Cam app图像拍照264.51 Mv2.3.02026-03-28
下载纯三国官方正版策略游戏167.24 Mv0.0.12026-03-28
下载Poka Cam app图像拍照74.7 Mv1.8.02026-03-28
下载COLMO app趣味娱乐199.15 Mv2.3.5.22026-03-28
下载愤怒的小鸟变形金刚苹果版休闲游戏439.4 Mv2.39.02026-03-28
下载这也能切苹果版休闲游戏479.6 Mv21342026-03-28
下载口袋吉伊卡哇苹果手机版模拟游戏920.4 Mv2.0.02026-03-28
下载










