是否可以替换部分字符串而无需创建全新的变量?
现在我这样做:
$someString = "how do you do this";
$someString = s/how do/this is how/;
我要做的是保留原始字符串($ someString)并且能够替换几个字符而无需修改原始字符串。我更熟悉Javascript,我可以在你的代码中这样做,而无需创建/修改变量。
someString.replace(/how do/, "this is how")
感谢任何帮助,非常感谢
答案 0 :(得分:15)
请注意我完全理解这个问题。如果要保持原始字符串不变,则需要创建一个新变量。
$newstring = $someString ;
$newstring =~ s/how do/this is how/;
请注意,运算符为=~
而不是=
添加我想我现在看到了你想要的东西 - 返回更改的字符串而不是修改变量。在Perl 5.14中有一种方法可以做到这一点,但我目前还不知道一种方法。请参阅Use the /r substitution flag to work on a copy上的The Effective Perler。
<强>更新强>
s/ / /r
函数已经在Perl中发布了一段时间。你可以做到
use 5.14.0 ;
my $someString = "how do you do this";
say ($someString =~ s/how do/this is how/r) ;
答案 1 :(得分:0)
您也可以使用lambda,即:
sub { local $_ = shift; s/how do/this is how/; $_ }->($someString)
如果您将lambda称为sub $_
{ }->($_)