博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单字符串处理应避免使用正则表达式
阅读量:4315 次
发布时间:2019-06-06

本文共 1046 字,大约阅读时间需要 3 分钟。

请记住,所有正则表达式匹配过程都会涉及匹配变量的处理,即使是最简单的正则表达式也不例外。

在Perl中,简单的字串操作应该使用特定的函数,比如index,rindex,substr以及tr///等。

1.字串比较操作符

#较快的方法if ($answer eq 'yes' )  { somesting_wonderful() }

2.用index 和 rindex 提取子串

index 操作符可以在较长字串中定位一个较短子串的位置。而rindex则是从最右端起定位,但位置的计算方式认识从左到右:

#在$big_str里寻找$little_str的位置,其实下标是0my $pos = index $big_str,$little_str;#从big_str右边起,第一个出现$little_str子串的起始位置my $pos = rindex $big_str,$little_str;

3. 用substr提取或修改子串

substr 操作符的作用是根据给定起始位置和字串长度提取字符串中的一部分内容。如果没有指定长度,则提取从指定位置开始一直到字串末尾的字串:

#得到“Perl”my $perl = substr "It's a Perl World",7,4;#得到“Perl World”my $perl_world = substr "It's a Perl World",7;

如果把substr表达式放在赋值操作的左侧,就是字串替换操作,即右侧字串将替换由substr指定位置和长度的字串,这种写法非常优雅:

#修改字串变量worldmy $world = "It's a Perl World";substr($world,7,4) = "Mad Mad Mad Mad";

将index 和 substr 结合起来,还可以实现类似于s///替换的功能。 不过只是替换的话,倒不如还使用s///,不但更快,而且意义明晰。

4.批量转换单个字符

不要忘了Perl还有tr///操作符,即字串转换操作符。 虽然形式更近,但它不是正则表达式,它所做的只是字符间的转换而已。 tr///没有/g选项,因为默认就是全局替换。

如果只想对字串某一部分转换,可以用substr限定范围

substr($string,0,10) =~ tr/a/b/;

转载于:https://www.cnblogs.com/tjxwg/archive/2013/04/01/2993718.html

你可能感兴趣的文章
Java魔法堂:找外援的利器——Runtime.exec详解
查看>>
mysql数据库存放路径
查看>>
TestNG(五)常用元素的操作
查看>>
解决 Visual Studio 点击添加引用无反应的问题
查看>>
通过镜像下载Android系统源码
查看>>
python字符串格式化 %操作符 {}操作符---总结
查看>>
windows 不能在 本地计算机 启动 Apache
查看>>
iOS开发报duplicate symbols for architecture x86_64错误的问题
查看>>
Chap-6 6.4.2 堆和栈
查看>>
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
查看>>
C# MySql 连接
查看>>
网络抓包分析方法大全
查看>>
sql 数据类型
查看>>
android 截图
查看>>
WebServicer接口类生成方法。
查看>>
POJ 1740
查看>>
【翻译】火影忍者鸣人 疾风传 终级风暴2 制作介绍
查看>>
http和webservice
查看>>
hdu1879------------prim算法模板
查看>>
jdbc之二:DAO模式
查看>>