如果我有逗号分隔的长度为10号的字符串(的文件0001010101
为例),并想重新格式化字符串每个字符串的最后两个字符为字母,其中替代01
是A
,并依此类推,直到26
被Z
什么拍的方式做在Perl?
示例文件内容:
0109150103,1807111225,0305102306
Run Code Online (Sandbox Code Playgroud)
输出将是:
01091501C,18071112Y,03051023F
Run Code Online (Sandbox Code Playgroud)
假设我将字符串拆分为数组,然后评估每个数字以查看带有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');
}
Run Code Online (Sandbox Code Playgroud)
可以用chr
echo "0109150103,1807111225,0305102306" |
perl -wnE'@t = split /,/; s/(..)$/chr(64+$1)/e for @t; say for @t'
Run Code Online (Sandbox Code Playgroud)
其中/e
改性剂使得在正则表达式的更换部件作为代码进行评价.
归档时间: |
|
查看次数: |
95 次 |
最近记录: |