Perl中的翻译运算符

翻译与Perl中的替换原理相似但不相同,但是与替换不同,翻译(或音译)不使用正则表达式搜索替换值。翻译运算符是-

tr/SEARCHLIST/REPLACEMENTLIST/cds
y/SEARCHLIST/REPLACEMENTLIST/cds

该转换将REARCHACEMENTLIST中的所有出现的字符替换为SEARCHLIST中的所有出现的字符。例如,使用“猫坐在垫子上”。我们在本章中一直使用的字符串-

示例

#/user/bin/perl
$string = 'The cat sat on the mat';
$string =~ tr/a/o/;
print "$string\n";

当执行上述程序时,将产生以下结果-

The cot sot on the mot.

也可以使用标准Perl范围,使您可以通过字母或数字值指定字符范围。要更改字符串的大小写,您可以使用以下语法代替uc函数。

$string =~ tr/a-z/A-Z/;

翻译运算符修饰符

以下是与翻译相关的运算符的列表。

序号修饰符和说明
1c
补充搜索列表。
2d
删除找到但未替换的字符。
3s
压下重复的替换字符。

/ d修饰符删除与SEARCHLIST匹配的,在REPLACEMENTLIST中没有相应条目的字符。例如-

示例

#!/usr/bin/perl
$string = '猫坐在垫子上。';
$string =~ tr/a-z/b/d;
print "$string\n";

当执行上述程序时,将产生以下结果-

b b b.

最后一个修饰符/ s删除被替换的重复字符序列,因此-

示例

#!/usr/bin/perl
$string = 'food';
$string = 'food';
$string =~ tr/a-z/a-z/s;
print "$string\n";

当执行上述程序时,将产生以下结果-

fod