Perl 将我的哈希应用于字符串以从字母中获取数字
我试图将字母转换成字母表中各自的数字。我有一个哈希,我认为应该工作,我只是不知道如何应用到我的字符串 字符串:Perl 将我的哈希应用于字符串以从字母中获取数字,perl,hash,Perl,Hash,我试图将字母转换成字母表中各自的数字。我有一个哈希,我认为应该工作,我只是不知道如何应用到我的字符串 字符串: my $string = "abc"; 还有我的杂烩: @hash{("a".."z")} = (1..26); 在这种情况下,如何将字符串设置为123? 更新:另一种没有散列的方法是使用 一般解决方案: my %lookup; @lookup{"a".."z"} = 1..26; my $pat = '(?:'.( join '|', map quotemeta, keys %
my $string = "abc";
还有我的杂烩:
@hash{("a".."z")} = (1..26);
在这种情况下,如何将字符串设置为123?
更新:另一种没有散列的方法是使用
一般解决方案:
my %lookup; @lookup{"a".."z"} = 1..26;
my $pat = '(?:'.( join '|', map quotemeta, keys %lookup ).')';
s/($pat)/$lookup{$1}/g;
假设关键帧最多由一个字符组成:
my %lookup; @lookup{"a".."z"} = 1..26;
my $class = '['.( join '', map quotemeta, keys %lookup ).']';
s/($class)/$lookup{$1}/g;
“硬编码”:
注意:两种方法都不处理字符在a..z之外的输入。这是个问题吗?
my %lookup; @lookup{"a".."z"} = 1..26;
my $pat = '(?:'.( join '|', map quotemeta, keys %lookup ).')';
s/($pat)/$lookup{$1}/g;
my %lookup; @lookup{"a".."z"} = 1..26;
my $class = '['.( join '', map quotemeta, keys %lookup ).']';
s/($class)/$lookup{$1}/g;
$string =~ s/([a-z])/ ord($1) - ord('a') + 1 /ge;