鉴于...在Perl中,如何在一次传递中用一组不同的字符替换一组字符?
Ax~B~xCx~xDx
... ... EMIT
A~-B-~C~-~D~
我要替换的字符〜 - 并与x个字〜。
我可以写...
s/~/-/g;s/x/~/g;
...但是,(貌似)经过串的两倍。
鉴于...在Perl中,如何在一次传递中用一组不同的字符替换一组字符?
Ax~B~xCx~xDx
... ... EMIT
A~-B-~C~-~D~
我要替换的字符〜 - 并与x个字〜。
我可以写...
s/~/-/g;s/x/~/g;
...但是,(貌似)经过串的两倍。
,TR ///是显而易见的答案:
tr/~x/-~/;
然而,你将需要小号///处理更长的序列:
my %subs = ('~' => '-', 'x' => '~');
my $pat = join '|', map quotemeta, keys %subs;
s/($pat)/$subs{$1}/g;
为什么要使用RegEx?为什么不直接迭代字符串呢? – 2012-02-09 19:51:20
因为这是...... PEEEEEEEEEERL !!!!比较严肃的是,正则表达式比编写整个东西的方式更短更快。 – m0skit0 2012-02-09 19:52:06
@CoreyOgburn因为如果我自己迭代字符串,我在Perl中写C(或FORTRAN?),目标是编写perl。 – 2012-02-09 20:20:43