鑑於...在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