Замена текста из пар ключевых значений

Я пытаюсь заменить текст из пар ключевых значений словаря. Вот сценарий 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 ответ

  1. Вы уже проверяете, содержит ли словарь ваш ключ, чтобы получить доступ к значению для замены с помощью оператора index []:

    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словарем fromt he. Вам даже не нужноregex, чтобы захватить $templatestrings.