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 "<%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>

时间: 2024-09-16 04:51:44

Perl删除前导和拖尾空白(删除左右空格、空白字符)_perl的相关文章

Perl删除前导和拖尾空白

  这篇文章主要介绍了Perl删除前导和拖尾空白(删除左右空格.空白字符),本文给出了多个方法实现解决这个需求,需要的朋友可以参考下 其它一些编程语言中,有函数ltrim和rtrim分别用于从字符串开头和末尾删除空格和制表符. 也有的提供了函数trim来删除字符串两端的空白字符.Perl里没这些函数因为简单的正则表达式替换就能实现这个目的(不过我确信CPAN有很多模块实现了这些函数).事实上这太简单了以至于成了帕金森琐碎定理里的一个显著主题. 左侧整理 ltrim或者lstrip从字符串左侧删除

Word文档中删除末尾多出的空白页的方法

  Word文档中删除末尾多出的空白页的方法            (1)调节页边距法:这种方法最快捷,我常用的是拉动法,就是用MOUSE按住左键,随意调节到合适的位置.这种方法对于少数页面的文档最适合,不用担心,页边距调整后,文档内表格变形. (2)调节行距法:在不能删掉的那一页,右键-段落-行距-固定值(调一个最小的值).你会发现在多余的页消失了.呵,这种方法不会影响其他页面. (3)DELETE法:有些时候其实很简单,当你用BACKSPACE删除内容,页面不会消失.而改用DELETE最后删

如果注册表值被删除导致文件夹选项空白

  问:我把电脑所有的隐藏文件包括系统文件都显示出来了,在文件夹选项中点"查看",发现原来的那些设置的地方全变成了空白!怎么办啊?还有就是我电脑中的所有MP3和WMA格式的文件双击打开,打开的却是记事本,是不是病毒啊?我用杀毒软件查过了,没有毒啊! 答:这是因为注册表中的相关键值被删除所导致,由于相关键值较多,一条一条手工恢复非常麻烦,所以最快捷的解决方法是:从其他正常的电脑中的注册表导出正确键值,导入到你的机器上. 在正常的系统注册表中定位到:HKEY_LOCAL_MACHINESO

winXP系统下添加/删除程序面板中显示空白问题的解决方法

  1.首先,咱们单击打开winXP电脑的开始菜单,然后从开始菜单中选择进入到运行窗口中,在打开的运行窗口中,咱们输入cmd并单击回车,这样就可以打开winXP系统的命令提示符窗口了. 2.在打开的命令提示符窗口中,咱们分别输入如下几组命令: regsvr32 Appwiz.cpl /s 回车; regsvr32 Mshtml.dll /s 回车; regsvr32 Jscript.dll /s 回车; regsvr32 Msi.dll /s 回车; regsvr32 Mshtmled.dll

XP系统中添加/删除程序面板中显示空白怎么回事?

  xp系统现在还是有一些用户在使用,最近就有客户说自己想要删除一些不想要常用的软件,打开自己控制面板里面的删除或者添加程序进行操作,结果发现里面是空白的,点击上方的程序也没有反应,不知道是怎么回事,点击下方的添加删除组件设置又是可以点击的,如何解决这个空白的问题呢,小编马上就给大家讲述一下具体的方法. 具体方法: 1.第一步大家点击打开开始菜单,在菜单中找到运行选项,点击打开运行选项后就会弹出输入框,在运行输入框中输入命令cmd并单击回车,直接就可以打开系统中的命令提示符窗口. 2.在命令提示

Flash制作旋转拖尾文字效果

文字旋转时后面跟着自己的影子,给人超强的速度感.在模拟物体快速运动时常常要用到这种效果,下面就讲一下这种文字的制作方法. 一.新建文档,设置文档大小为500×500.帧频为30/秒. 二.创建一个图形元件,起名"影子",用文本工具选择合适的字体.加粗.斜体在舞台上输入文字,如中国教程网网址"bbs.jcwcn.com".设置面板如下图: 三.将文字打散为矢量图(执行两次"CTRL+B"键),然后用颜料桶工具进行渐变填充,混色器面板如图: 填充时先

在服务端进行目录建立、删除,文件上传、删除的过程

过程|上传 <?php  extract($_POST);  extract($_GET); ?><html><head><title>查看服务器端目录和文件</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> <body bgcolor="#FFFFFF

Fireworks滤镜快速打造3D彩虹拖尾字特效

滤镜|特效 使用Fireworks中的Motion Trail滤镜可以快速制作出如下图所示的3D效果彩虹拖尾字. 图1 本例在Fireworks 8中文版中制作完成,具体操作步骤如下. 1.启动Fireworks mx 2004中文版后,按Ctrl+N新建一个文档,大小自定,然后使用文本工具在画布上单击,输入文本"网页教学网",注意这里共五个字,设置字体为"隶书",字号为64,结果如图2所示. 图2 2.在文本框中选中"网",将颜色改为紫色,再选

Cocos2D-X入门(15)实现拖尾效果

游戏中的刀光剑影 好的游戏效果必不可少,cocos2D中用CCMotionStreak实现这样的拖尾效果. streak=CCMotionStreak::create(1, 16, 16, ccc3(255, 255 ,0), "fire.png"); streak->setPosition(ccp(240,160)); this->addChild(streak, 5); 在触摸事件中更新streak的位置,让其跟随鼠标. bool ZDScene::ccTouchBeg