替换键值对中的文本

时间:2016-05-04 00:23:22

标签: powershell dictionary powershell-v2.0 powershell-v3.0

我正在尝试替换字典的键值对中的文本。这是我正在研究的powershell脚本,

foreach ($string in $templatestrings) {


               if($Dictionary.ContainsKey($string))
                {
                    $Dictionary.Keys | % { $templatecontent = $templatecontent -replace "{{$string}}", ($Dictionary[$_]) }
                 }  

    }
 $templatecontent | set-content $destinationfilename

}

基本上如果文本值与字典键匹配,那么我们将用字典值替换文本。似乎更换部件没有按预期工作。我想用字典值替换文本值。 I'm storing the text values in $templatecontent variable.有人可以告诉我替换这些文本值的正确方法。

1 个答案:

答案 0 :(得分:0)

您已经检查了字典是否包含密钥,因此您可以使用索引运算符[]来访问要替换的值:

foreach ($string in $templatestrings) 
{
    if($Dictionary.ContainsKey($string))
    {
        $templatecontent = $templatecontent -replace "{{$string}}", ($Dictionary[$string])
    }  
}

但是,正如我在上一个答案中所示,你可以简化这一点:

$templatecontent = Get-Content $sourcefilename
$Dictionary.Keys | % { $templatecontent = $templatecontent -replace "{{$_}}", ($Dictionary[$_]) } 
templatecontent | set-content $destinationfilename

这三行将用字典中的{{key}}替换每个value。您甚至不需要regex来捕获$templatestrings