有没有办法替换字符串中的多个字符串?
例如,我有一个字符串你好世界是多么可爱的一天,我想用其他东西替换什么和可爱的..
例如,我有一个字符串你好世界是多么可爱的一天,我想用其他东西替换什么和可爱的..
$sentence = "hello world what a lovely day"; @list = ("what","lovely"); # strings to replace @replist = ("its","bad"); # strings to replace with ($val = $sentence) =~ "tr/@list/@replist/d"; print "$val\n"; # should print "hello world its a bad day"..
任何想法为什么它不起作用?
谢谢.
首先,tr不起作用;有关详细信息,请参阅perldoc perlop,但tr表示音译,与替换非常不同.
原文链接:https://www.f2er.com/regex/357230.html为此,更正确的替换方法是
# $val $val =~ s/what/its/g; $val =~ s/lovely/bad/g;
请注意,“同时”更改相当困难,但我们可以这样做,例如,
%replacements = ("what" => "its","lovely" => "bad"); ($val = $sentence) =~ s/(@{[join "|",keys %replacements]})/$replacements{$1}/g;
(当然,可能需要转义以使用元字符替换字符串.)
这仍然只是在一个非常松散的意义上同时发生,但是对于大多数目的而言,它确实表现为好像一次性完成替换.
而且,将“what”替换为“it’s”而不是“its”更为正确.