web-dev-qa-db-de.com

Wie konvertiere ich ein Array-Objekt in eine Zeichenfolge in PowerShell?

Wie kann ich ein Array-Objekt in einen String konvertieren?

Ich habe es versucht:

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

ohne glück. Welche unterschiedlichen Möglichkeiten bietet PowerShell?

148
jrara
$a = 'This', 'Is', 'a', 'cat'

Verwenden von doppelten Anführungszeichen (und optional das Trennzeichen $ofs)

# This Is a cat
"$a"

# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"

Operator-Join verwenden

# This-Is-a-cat
$a -join '-'

# ThisIsacat
-join $a

Verwendung der Konvertierung in [string]

# This Is a cat
[string]$a

# This-Is-a-cat
$ofs = '-'
[string]$a
254
Roman Kuzmin

Ich habe festgestellt, dass das Array an die Out-String Cmdlet funktioniert auch gut.

Zum Beispiel:

PS C:\> $a  | out-string

This
Is
a
cat

Es hängt von Ihrem Endziel ab, welche Methode am besten geeignet ist.

29
Jeremy Saunders
1> $a = "This", "Is", "a", "cat"

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

Zeile zwei führt die Operation aus und gibt sie an Host aus, ändert aber nicht $ a:

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

4> $a

Das ist eine Katze

5> $a.Count

1
16
TCC

Aus einer Pfeife

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

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

Schreib-Host

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

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

Beispiel

9
Steven Penny

Sie können einen Typ wie diesen angeben:

[string[]] $a = "This", "Is", "a", "cat"

Überprüfung des Typs:

$a.GetType()

Bestätigt:

 IsPublic IsSerial Name BaseType 
 -------- -------- ---- -------- 
 True True String [] System.Array 

$ A ausgeben:

 PS C: \> $ a 
 Diese 
 Ist 
 Eine 
 Katze 
3
Ameer Deen
$a = "This", "Is", "a", "cat"

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

Write-Host $sent
0
Underverse