在Perl中用逗号分隔的列表替换字符串的一部分

在Perl中用逗号分隔的列表替换字符串的一部分,第1张

概述如果我有一个逗号分隔长度10个数字字符串的文件(例如0001010101)并且想要重新格式化字符串以用字母替换每个字符串的最后两个字符,其中01是A,依此类推,最多26个是Z是什么在Perl中执行此 *** 作的方法是什么? 示例文件内容: 0109150103,1807111225,0305102306 输出将是: 01091501C,18071112Y,03051023F 假设我将字符串拆分为数组,然 如果我有一个逗号分隔长度10个数字字符串的文件(例如0001010101)并且想要重新格式化字符串以用字母替换每个字符串的最后两个字符,其中01是A,依此类推,最多26个是Z是什么在Perl中执行此 *** 作的方法是什么?

示例文件内容:

0109150103,1807111225,0305102306

输出将是:

01091501C,18071112Y,03051023F

假设我将字符串拆分为数组,然后评估每个数字以查看带有substr的最后2位数字并替换为相应的字母.想知道什么是最有效的方法来做这个恶看,看看01然后设置为A,依此类推.

我会做的蛮力方式如下:

$data=<file.txt>;@tokens=split /,/,$data;while(@tokens){ print substr($_,7)."A," if(substr($_,8,2)=='01'); print substr($_,7)."B,2)=='02');#.#. print substr($_,7)."Z,2)=='26');}
解决方法 可以使用 chr

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

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

总结

以上是内存溢出为你收集整理的在Perl中用逗号分隔的列表替换字符串的一部分全部内容,希望文章能够帮你解决在Perl中用逗号分隔的列表替换字符串的一部分所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1265138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存