Как преобразовать объект массива в строку в PowerShell? - PullRequest
146 голосов
/ 11 октября 2011

Как я могу преобразовать объект массива в строку?

Я пытался:

$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)

без удачи. Каковы различные возможности в PowerShell?

Ответы [ 6 ]

249 голосов
/ 11 октября 2011
$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
29 голосов
/ 24 января 2014

Я обнаружил, что передача массива в командлет Out-String тоже работает хорошо.

Например:

PS C:\> $a  | out-string

This
Is
a
cat

Это зависит от вашей конечной цели, так каккакой метод лучше всего использовать.

15 голосов
/ 05 января 2016
1> $a = "This", "Is", "a", "cat"

2> [system.String]::Join(" ", $a)

Вторая строка выполняет операцию и выводит на хост, но не изменяет $ a:

3> $a = [system.String]::Join(" ", $a)

4> $a

Это кот

5> $a.Count

1
8 голосов
/ 30 октября 2014

из трубы

# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}

# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}

Write-Host

# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'

# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'

Пример

3 голосов
/ 12 ноября 2013

Вы можете указать тип так:

[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
0 голосов
/ 16 сентября 2016
$a = "This", "Is", "a", "cat"

foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)

Write-Host $sent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...