Включить код в определение строки? - PullRequest
2 голосов
/ 14 октября 2010

У меня есть строка

$string = "Active Directory"

и я хочу сделать еще одну строку

Active_Directory_Results.txt

Я хотел бы просто сделать

$otherstring = "$string.Replace(" ","_")_Results.txt"

но это не сработает. Как правильно это сделать?

Ответы [ 2 ]

4 голосов
/ 15 октября 2010

Вы должны не использовать для этого выражение invoke.Оригинальный ответ хорош:

$otherstring = $string.Replace(" ","_") + "_Results.txt"

Но на самом деле вы можете просто использовать $ (подвыражение):

$otherstring = "$($string.Replace(" ","_"))_Results.txt"

$ () говорит PowerShell вычислить это ПЕРЕД определением строки,

В качестве альтернативы вы также можете использовать форматирование строки:

$otherstring = "{0}_Results.txt" -f $string.Replace(" ","_")

Еще раз доказав, что с языками сценариев всегда существует более одного правильного пути ...

2 голосов
/ 14 октября 2010

Я сейчас не на своей машине с Windows, но как работает $otherstring = $string.Replace(" ","_") + "_Results.txt"?

Проверьте команду invoke-expression . Это позволяет вам выполнять код в строке. Как:

PS> $command = '$otherstring = $string.Replace(" ","_") + "_Results.txt"'
PS> Invoke-Expression $command
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...