2016-05-04 59 views
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.有人可以告訴我取代這些文本值的正確方法。

+0

這是怎麼回事,你是最後一個問題(S)使用此代碼,你也要求文本替換 – Matt

+0

@Matt 其實在上一個問題中,我匹配每個字符串與鍵和替換值。現在,我已經更新了'if condition'如下, '$ Dictionary.ContainsKey($ string)'.. 您能告訴我替換值的正確方法嗎?謝謝。 – mahesh

回答

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 

這三條線將與value替換每{{key}} fromt他的字典。你甚至不需要regex來捕獲$templatestrings

+0

是的。這工作正常。我感謝它jisaak。非常感謝你的解決方案。 – mahesh