tr函数能以一一对应的方式将搜索字符串中的字符转译为替换字符串中的相应字符。
tr函数的返回值是替换的字符总数。
tr函数不能解释正则表达式中的元字符,但允许通过散列变量表示某个范围内的字符。
这里可用字母y来替换tr,该特性继承自UNIX,因为后者提供的sed实用工具中有一个y命令。该命令也能用于转换字符,其效果类似于UNIX中的tr命令。这也从另一方main说明了UNIX在Perl开发过程中的重要作用。
d选项用于删除搜素字符串。
c选项用于不全搜素字符串。
s选项又称为挤压(squeeze)选项。它能把搜索字符串中找到的多个具体值替换成该字符相应的耽搁具体值。(例如,将多个制表符替换为单个制表符)。
举例说明:
$_ = "ABCDEFG hijklmn OPQ rst UVW xyz 0123456789";
1、tr/A-Z/a-z/; 一一对应
这个表示一一对应进行替换,A-a,B-b,......,Z-z。即大写字母换成相应的小写字母。
但是tr/A-Z/b-e/,这里的一一对应就是:A-b,B-c,C-d,D-e,E-e,.........,意思是从开始一一对应,到最后没有了就直接用最后一个。
2、tr/0-9/@/; 替换
把字符串中的0-9中的数字直接替换为@;
tr/ /#/; 替换
把字符串中的空格全部替换为#。
3、删除选项d:从搜索字符串里删除那些没有出现在替换字符串中的字符。
tr/0-9//d; 删除非0-9的数字,包括空格,换行符,制表符等等。
tr/ //d; 删除空格,注意:tr/ //;并不能删除空格。
4、t r 补全选项。选项c (complement)负责补全搜索字符串;也就是把没有出现在该字符串中的字符转换为替换字符串里的相应字符。
tr/0-9/#/c; 把不是0-9的数字全部换成#号。输出结果如下:
################################0123456789
tr/0-9/#/; 这个是把0-9的数字全部换成#号。输出结果如下:
ABCDEFG hijklmn OPQ rst UVW xyz ##########
5、t r 挤压选项。选项s (squeeze)负责把所有重复的字符替换为相应的单个字符。
$_ = "ABCDEFG hijklmn OPQ rst UVW xyz 0123456789999999999999999999999999";
tr/9/9/s;合并所有的9,输出结果:
ABCDEFG hijklmn OPQ rst UVW xyz 0123456789
tr/9/2/s; 合并所有的9,并改为2输出结果:
ABCDEFG hijklmn OPQ rst UVW xyz 0123456782
到此基本上tr的属性就介绍完了。有空和s///比较一下啊,呵呵
原文链接:https://www.f2er.com/regex/360949.html