2012-02-02 3 views
4

PowerShell В Powershell дается следующая строкакак я заменить строку со знаком доллара в нем в

$string = "this is a sample of 'my' text $PSP.what do you think" 

как использовать функцию -replace, чтобы преобразовать строку в

this is a sample of 'my' text Hello.what do you think 

Мне явно нужно как-то избежать строки. Также $ PSP не является объявленной переменной в моем сценарии

Мне нужно изменить все упоминания о $ PSP для какой-либо другой строки

ответ

7

Используйте кавычка символ (над клавишей табуляции):

$string = "this is a sample of 'my' text `$PSP.what do you think" 

Чтобы заменить знак доллара с помощью оператора -replace, избежать его с обратной косой черты:

"this is a sample of 'my' text `$PSP.what do you think" -replace '\$PSP', 'hello' 

Или использовать метод string.replace:

$string = "this is a sample of 'my' text `$PSP.what do you think" 
$string.Replace('$PSP','Hello)' 

это образец «мой» текст Hello.what вы думаете

+0

Я не могу изменить строку ввода –

+0

Я не буду следовать за вами, откуда вы получаете значение? –

+0

Это из шаблона скрипта sql, который загружается в переменную –

-1

Вы должны попробовать

$ строка = $ string.replace ("\ $ PSP", "Привет")

или

$ строка = $ string.replace ("\ $ PSP", $ the_new_value)

или быть более общим использование Regex

$ строка = [регулярное выражение] :: Replace ($ строка "\ $ \ ш +", "Привет")

+0

я мог бы сделать, но это список сцепленных Заменяет который будет означать изменение формата для этого отдельного элемента –

+0

ли это на самом деле работает? вы его протестировали? он не работает для меня –

+0

Да, он работает, если $ string действительно содержит символ $. Когда вы просто проверяете выход. (всего $ string) вы видите $ PSP или нет? –

0

Если вы не измените исходную строку (например, путем экранирования $), это невозможно (реально). Ваш $string действительно не содержит $PSP, так как он не заменен ничем в инструкции присваивания.

$string = "this is a sample of 'my' text $PSP.what do you think" 
$string -eq "this is a sample of 'my' text .what do you think" 

вычисляет:

True