Заменить подстроку в PowerShell

У меня есть строка в форме -content-, и я хотел бы заменить ее &content&. Как это сделать с заменой в PowerShell?

Ответ 1

Встроенный оператор -replace позволяет вам использовать регулярное выражение для этого, например:

C:\PS> '-content-' -replace '-([^-]+)-', '&$1&'
&content&

Обратите внимание, что использование одиночных кавычек имеет важное значение для строки замены, поэтому PowerShell не интерпретирует группу захвата $ 1.

Ответ 2

Строки PowerShell - это строки.NET, поэтому вы можете:

PS> $x = '-foo-'
PS> $x.Replace('-', '&')
&foo&

...или:

PS> $x = '-foo-'
PS> $x.Replace('-foo-', '&bar&')
&bar&

Очевидно, что если вы хотите сохранить результат, назначьте его другой переменной:

PS> $y = $x.Replace($search, $replace)

Ответ 3

Как я могу заменить \\server\Share $ на D:? Я попробовал ниже, но ничего не меняется. может кто-нибудь сказать мне, что я делаю не так.

     $Results | ForEach-Object {
$_.FullName = $_.FullName -replace "$userpath", 'D:' }