2014-11-25 79 views
0

我用下面的代碼艱難的變量替換字符串,這就是我得到:使用PowerShell的

"FirstName":"$value","LastName":"$value"...... 

但是,這是我想達到的目標:

"FirstName":"${strClientName}","LastName":"${strSurName}" ..... 

那麼如何我可以強制powershell從HashTable返回所需的值而不是顯示:$value

問題是中的hashtabl的值即如果我從哈希表中刪除它,它會正確顯示,但$需要顯示在輸出中。

代碼:

$str = '"FirstName":"f_name","LastName":"l_name","AskCatalog":false,"Nuteres":12","ZipCode":"1234","City":"LA BOUVERIE","Street":"Rue Pasteur","StreetNr":"34","Phone":"12345678","Email":"[email protected]"' 

$list = @{FirstName="${strName}"; 
      LastName="${strSurName}"; 
      ZipCode="${strZipCode}"; 
      City="${strCity}"; 
      Street="${strStreet}"; 
      StreetNr="${strNumber}"} 

foreach($item in $list.GetEnumerator()) 
{ 
    $key = $item.Key 
    $value = $item.Value 
    $pattern = '("'+$key+'":)".*?"' 
    $changed = "`$1`"`$value`"" 
    $result = $str = $str -replace $pattern, $changed 
} 

Write-Host $result 

回答

1

不知道我完全理解,但這裏是一個嘗試:

$str = '"FirstName":"f_name","LastName":"l_name","AskCatalog":false,"Nuteres":12","ZipCode":"1234","City":"LA BOUVERIE","Street":"Rue Pasteur","StreetNr":"34","Phone":"12345678","Email":"[email protected]"' 

$list = @{FirstName='${strName}'; 
     LastName='${strSurName}'; 
     ZipCode='${strZipCode}'; 
     City='${strCity}'; 
     Street='${strStreet}'; 
     StreetNr='${strNumber}'} 

foreach($item in $list.GetEnumerator()) 
{ 
    $key = $item.Key 
    $value = $item.Value 
    $pattern = '("'+$key+'":)".*?"' 
    $changed = "`$1`"$value`"" 
    $result = $str = $str -replace ($pattern, $changed) 
} 

Write-Host $result 

結果我得到的是

"FirstName":"${strName}","LastName":"${strSurName}","AskCatalog":false,"Nuteres":12","ZipCode":"${strZipCode}","City":"${strCity}","Street":"${strStreet}","StreetNr":"${strNumber}","Phone":"12345678","Email":"[email protected]" 
+0

我曾試圖刪除(' )之前的字符,但它返回空字符串。所以現在確實如此。你怎麼得到這個結果?你在代碼中改變了什麼? – 2014-11-25 13:50:11

+0

基本上這一行:'$ changed =「'$ 1'」$ value'「」' – 2014-11-25 13:51:56

+0

哦,還有$ list,注意它有單引號而不是雙引號。無論如何,嘗試完整的代碼。你應該看到和我一樣的結果。 – 2014-11-25 13:53:32