Dar*_*enW 1 string perl substitution
我有一个像这样的字符串:
*******voltage:156.7;****current:44;****voltage:98;current:0.9;***voltage:45;***
Run Code Online (Sandbox Code Playgroud)
其中*是啰嗦的垃圾,我们不关心.我们想要做的是产生一个相同的新字符串,但要找到每个"电压"并用voltage1,voltage2等替换它,这样每个电压读数都有一个唯一的键名.同样适用于当前(和其他几个).
目前尚不清楚Perl中最简单的方法是什么.它必须是适度熟练的Perl程序员和EE可读的.终极速度并不重要,我们希望坚持使用内置的Perl功能,而不是使用一些疯狂的模块.我们这些谦虚熟练的家伙都没有找到一种方法来做到这一点,而不会制造出非繁琐的代码.
使用正则表达式可能有一个很好的方法,但如果它是一个复杂的大师唯一的正则表达式,没关系!
如果解决方案可以在古老的Perl 5.6版本上运行,那么第二个绿色复选标记
#!/usr/bin/env perl
use strict; use warnings;
my $s = q{*******voltage:156.7;****current:44;****voltage:98;current:0.9;***voltage:45;***};
my $counter = 0;
$s =~ s/(voltage)/$1 . ++$counter/ge;
print "$s\n";
Run Code Online (Sandbox Code Playgroud)
输出:
*******voltage1:156.7;****current:44;****voltage2:98;current:0.9;***voltage3:45;
***