收藏本站 收藏本站
积木网首页 - 技术学院 - 软件测试 - 网站黄页 - 常用手册 - 站长工具 - 技术社区
首页 > perl > 正文

首页 - PHP - 数据库 - 操作系统 - 游戏开发 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell编程 - DOS命令 - jQuery - CSS样式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

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>

Perl中的单行注释和多行注释语法
同其他大多数编程语言一样,Perl中的单行注释也是#开头,例如:#print"Hello,World!";但多行注释,不同的语言有不同的注释方式,比如说:Java,C/C++:/**注释若

Perl的Mail::POP3Client模块和Gmail通信实例
一、前言最近在写一个从gmail批量下载附件的程序,用到了Mail::POP3Client和MIME::Parser2个模块二、相关文档CPAN:Mail::POP3Client模块MIME::Parser模块StrawberryPerl模

Perl List::Util模块使用实例
在Perl中有一些专门用于处理列表数据的模块,比如说List::Util模块,该模块包含在标准库中,能提供各种高效的常见列表处理工具。因其用C语言来实现

本周排行

更新排行

强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号