2017-11-20 3 views
1

"のvar NUM = [ 'asd23'、 'asd31']" PowerShellの

var num = ['rev11111','rev222']; //replace with any string 

が試み下回っとして与える文字列

var num = ['red222','edr223']; //this value is always changing 

を交換してください:

num = @('rev11111','rev222') // text present in file say file.txt 
(Get-Content "C:\file.txt").Replace('var num = *',"var num = ["+(@($Num) -join ",")+"];")| Set-Content "C:\file.txt" 

これはあまり役に立ちませんでした。 []が空でないときは置き換えられません。文字列を置き換える方法。助けてください!

答えて

2

文字列オブジェクトのReplaceメソッドではなく、-replace演算子を使用すると思います。 ReplaceはRegexをサポートしていません。

あなたが変更した場合:

$Num = @('rev11111','rev222') # text present in file say file.txt 
(Get-Content "C:\temp\input.txt") -replace ('var num = \[.*\]', "var num = [$(@($Num) -join ",")]") | Set-Content "C:\file.txt" 

動作しているようです。私も正規表現をvar num = \[.*\]に拡張しました。

希望に役立ちます。

+2

.Netの['System.String'](https://docs.microsoft.com/en-us/dotnet/api/system.string?view=netframework-4.7.1#Methods)は正規表現をサポートしていません。 'System.Text.RegularExpressions'にはクラスがありますが、あなたの答えに応じて' -replace'が動作するとき、それを使うのはかなり残忍です。 – vonPryz

+0

@vonPrys:Thx、答えを更新しました。 – Moerwald

+0

@nitin chawda:回答が大丈夫なら、問題を解決済みとしてマークしてください。どうも – Moerwald

関連する問題