Regex Perl将26个字符替换为数字
我想用数字替换字符串 例如(窗户上有一个衬里): 结果是:Regex Perl将26个字符替换为数字,regex,perl,tr,Regex,Perl,Tr,我想用数字替换字符串 例如(窗户上有一个衬里): 结果是: 12345678999999999999999999 这一直持续到9,但如何在字符I之后分配数字对应项? 我想知道如何将2号符号分配给1号符号 比如说, 12 -> j, 13 -> k, etc. 要确定数值,分配是有意义的 "1-", "2-", ... "25-", "26". 不幸的是,我不相信tr//能做到这一点——这是一对一的字符替换。因此,你必须走很长的路: my %indicies = map {
12345678999999999999999999
这一直持续到9,但如何在字符I之后分配数字对应项?我想知道如何将2号符号分配给1号符号 比如说,
12 -> j, 13 -> k, etc.
要确定数值,分配是有意义的
"1-", "2-", ... "25-", "26".
不幸的是,我不相信
tr//
能做到这一点——这是一对一的字符替换。因此,你必须走很长的路:
my %indicies = map { $_ => (ord($_) - ord('a')) + 1 } ('a' .. 'z');
my $result = join '', map { $indicies{$_} } split(//, $string);
不幸的是,这不是一行。我不相信
tr///
能做到这一点。不幸的是,这是一对一的字符替换。因此,你必须走很长的路:
my %indicies = map { $_ => (ord($_) - ord('a')) + 1 } ('a' .. 'z');
my $result = join '', map { $indicies{$_} } split(//, $string);
perl -E"$_ = 'abcdefghijklmnopqrstuvwxyz'; s/([a-z])/ord($1)-96/ge; say;"
不幸的是,这不是一条直线
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
或者如果你有5.14+
perl -E"say 'abcdefghijklmnopqrstuvwxyz' =~ s/([a-z])/ord($1)-96/ger;"
您可以用任何规则代替
ord($1)-96
,谢谢。我不知道ord()。有没有可能在连字符处得到1-2-3-4….-26-?@giordanos///
的第二部分只是Perl代码。所以(ord($1)-96)。”代码>。谢谢。我不知道这样使用括号是可能的。现在我明白了“justperl”的意思:它不是regex语法。非常感谢。就这样,非常感谢。我不知道ord()。有没有可能在连字符处得到1-2-3-4….-26-?@giordanos///
的第二部分只是Perl代码。所以(ord($1)-96)。”代码>。谢谢。我不知道这样使用括号是可能的。现在我明白了“justperl”的意思:它不是regex语法。非常感谢。谢谢你的信息和代码。这对于类似的问题是有帮助的。谢谢你的信息和代码。这对于类似的问题是有帮助的。