String 如何用多值替换perl中的字符串
假设我有一个字符串和一个数组,如下所示:String 如何用多值替换perl中的字符串,string,perl,replace,str-replace,String,Perl,Replace,Str Replace,假设我有一个字符串和一个数组,如下所示: my $str = "currentStringwithKey<i>"; my @arr = ("1", "2"); 不使用for循环使用for来执行此操作 /r是非破坏性修饰符,用于返回替换并保持原始字符串不变 这是你想要的。这种方法将用替换文本替换,而不管在模板$str中出现在何处 @outputArray = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr @outputA
my $str = "currentStringwithKey<i>";
my @arr = ("1", "2");
不使用for循环使用for来执行此操作 /r是非破坏性修饰符,用于返回替换并保持原始字符串不变
这是你想要的。这种方法将用替换文本替换
,而不管
在模板$str
中出现在何处
@outputArray = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr
@outputArray=map{my$i=$str;$i=~s/\/$\uu/;$i}@arr
您需要将
$str
复制到临时文件,因为replace可以在适当的位置工作。如果您直接使用$str
,那么它的值将在第一次更改。您的意思是我的$str[i]=“currentstring”代码>?如果您可以自己设置字符串标记,则可以使用sprintf:my$str=“currentString%s”;我的@output=map{sprintf$str,$\u}@arr
@TLP谢谢!我使用的只是一个需要替换的字符的意思@PatoSáinz我的意思是,输入只是带有一些字符的字符串,我想用不同的值替换这些字符,这些值将产生{“currentStringwithKey1”,“currentStringwithKey2”}
,而不是要求的那样。OP希望将文本
替换为数字。编辑后,它会这样做。但是如果
不是在最后呢?$str
的值是一个模板,
是一个占位符。谢谢@mkHun,这就是我要找的。正则表达式上的r
标志可以让你更干净地完成这项工作。只需使用映射{$str=~s/$\ur}
就可以了。无需使用temp变量或转义
。
my $str = "currentStringwithKey<i>";
my @arr = ("1", "2");
my @output = map{ $str=~s/<i>/$_/rg } @arr;
#$str not to be changed because of the r modifier
print @output;
$output[0] = "currentStringwithKey1",
$output[1] = "currentStringwithKey2"
@outputArray = map { my $i=$str; $i =~ s/\<i\>/$_/; $i } @arr