Как преобразовать объект массива в строку?
Я пробовал:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
не повезло. Каковы различные возможности в PowerShell?
Как преобразовать объект массива в строку?
Я пробовал:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
не повезло. Каковы различные возможности в PowerShell?
$a = 'This', 'Is', 'a', 'cat'
Использование двойных кавычек (и необязательно использовать разделитель $ofs
)
# This Is a cat
"$a"
# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"
Использование оператора join
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
Использование преобразования в [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
Я обнаружил, что соединение массива с командлетом Out-String
тоже хорошо работает.
Например:
PS C:\> $a | out-string
This
Is
a
cat
Это зависит от вашей конечной цели в отношении того, какой метод лучше всего использовать.
1> $a = "This", "Is", "a", "cat"
2> [system.String]::Join(" ", $a)
Строка 2 выполняет операцию и выводит на хост, но не модифицирует $a:
3> $a = [system.String]::Join(" ", $a)
4> $a
Это кошка
5> $a.Count
1
Из трубы
# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}
# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}
Написать-Host
# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'
# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'
Вы можете указать тип следующим образом:
[string[]] $a = "This", "Is", "a", "cat"
Проверка типа:
$a.GetType()
Подтверждает:
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String[] System.Array
Вывод $a:
PS C:\> $a This Is a cat
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent