Конкатенация переменной и строкового литерала без пробела в PowerShell - PullRequest
44 голосов
/ 28 февраля 2011

Как я могу записать переменную в консоль без пробела после нее?Есть проблемы, когда я пытаюсь:

$MyVariable = "Some text"
Write-Host "$MyVariableNOSPACES"

Я хотел бы следующий вывод:

Some textNOSPACES

Ответы [ 7 ]

59 голосов
/ 01 марта 2011

Другой вариант и, возможно, более канонический способ - использовать фигурные скобки для обозначения имени:

$MyVariable = "Some text"
Write-Host "${MyVariable}NOSPACES"

Это особенно удобно для путей, например ${ProjectDir}Bin\$Config\Images.Однако, если после имени переменной есть \, этого достаточно для PowerShell, чтобы считать, что не часть имени переменной.

20 голосов
/ 28 февраля 2011

Вам нужно обернуть переменную в $ ()

Например, Write-Host "$($MyVariable)NOSPACES"

10 голосов
/ 28 февраля 2011
Write-Host $MyVariable"NOSPACES"

Будет работать, хотя выглядит очень странно ... Я бы пошел на:

Write-Host ("{0}NOSPACES" -f $MyVariable)

Но это только я ...

3 голосов
/ 01 мая 2018

Вы также можете использовать обратную галочку `, как показано ниже:

Write-Host "$MyVariable`NOSPACES"
1 голос
/ 20 июля 2012

Самое простое решение: Write-Host $ MyVariable "NOSPACES"

0 голосов
/ 22 апреля 2019

$ Variable1 = 'www.google.co.in /'

$ Variable2 = 'Изображения'

запись-вывод ($ Variable1 + $ Variable2)

0 голосов
/ 17 февраля 2019

если скорость имеет значение ...

$MyVariable = "Some text"

# slow:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$($MyVariable)NOSPACE"
}}).TotalMilliseconds

# faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = "$MyVariable`NOSPACE"
}}).TotalMilliseconds

# even faster:
(measure-command {foreach ($i in 1..1MB) {
    $x = [string]::Concat($MyVariable, "NOSPACE")
}}).TotalMilliseconds

# fastest:
(measure-command {foreach ($i in 1..1MB) {
    $x = $MyVariable + "NOSPACE"
}}).TotalMilliseconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...