gpt4 book ai didi

string - 在 Perl 中以逗号分隔的列表中的字符串部分中的字母替换数字

转载 作者:行者123 更新时间:2023-12-04 22:39:32 27 4
gpt4 key购买 nike

如果我有一个逗号分隔长度为 10 个数字字符串的文件(例如 0001010101),并且想要重新格式化该字符串以将每个字符串的最后两个字符替换为一个字母 where 01A ,等等直到 26正在 Z在 Perl 中执行此操作的最佳方式是什么?

示例文件内容:

0109150103,1807111225,0305102306

输出将是:
01091501C,18071112Y,03051023F

假设我会将字符串拆分为一个数组,然后评估每个字符串以查看带有 substr 的最后 2 位数字并替换为适当的字母。想知道做这个恶习的最有效方法是什么,看看 01然后设置为 A , 等等。

我会做的蛮力方式是:
$data=<file.txt>;
@tokens=split /,/,$data;
while(@tokens)
{
print substr($_,0,7)."A," if(substr($_,8,2)=='01');
print substr($_,0,7)."B," if(substr($_,8,2)=='02');
#.
#.
print substr($_,0,7)."Z," if(substr($_,8,2)=='26');
}

最佳答案

可以用chr

echo "0109150103,1807111225,0305102306" | 
perl -wnE'@t = split /,/; s/(..)$/chr(64+$1)/e for @t; say for @t'

哪里 /e修饰符使正则表达式中的替换部分被评估为代码。

关于string - 在 Perl 中以逗号分隔的列表中的字符串部分中的字母替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com