我想用数字通讯符替换字符串。
例如(Windows上的单行):
perl -e "$_ = \"abcdefghijklmnopqrstuvwxyz\"; tr\a-z\1-9\;"
结果是:
12345678999999999999999999
这可以工作到9但我怎么能在字符i后分配数字通讯员?
我想知道如何将2个符号分配给1个符号,
例如,
12 -> j, 13 -> k, etc.
要识别数值,分配
是有意义的"1-", "2-", ... "25-", "26".
答案 0 :(得分:5)
perl -E"$_ = 'abcdefghijklmnopqrstuvwxyz'; s/([a-z])/ord($1)-96/ge; say;"
或者如果你有5.14 +
perl -E"say 'abcdefghijklmnopqrstuvwxyz' =~ s/([a-z])/ord($1)-96/ger;"
您可以替换任何规则而不是ord($1) - 96
。
答案 1 :(得分:2)
我不相信tr///
可以做到这一点 - 这是一对一的角色替换。所以你将不得不走很长的路:
my %indicies = map { $_ => (ord($_) - ord('a')) + 1 } ('a' .. 'z');
my $result = join '', map { $indicies{$_} } split(//, $string);
不幸的是,这不是一个单行。