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?
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?
Antworten:
$a = 'This', 'Is', 'a', 'cat'
Verwenden Sie doppelte Anführungszeichen (und verwenden Sie 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"
Verwenden von Operator Join
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
Konvertierung nach verwenden [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
Ich fand, dass das Out-String
Weiterleiten des Arrays an das Cmdlet auch gut funktioniert.
Beispielsweise:
PS C:\> $a | out-string
This
Is
a
cat
Es hängt von Ihrem Endziel ab, welche Methode am besten geeignet ist.
$a
$a | out-string
($a | out-string).getType()
= String. $a.getType()
= Objekt []. Wenn Sie $ a als Argument für eine Methode verwenden, die eine Zeichenfolge erwartet (z. invoke-expression
B.), $a | out-string
hat dies einen klaren Vorteil.
Aus einem Rohr
# 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'
$ofs
ist Output Field Separator
Variable , die verwendet wird , wenn ein Array in Zeichenfolge für die Ausgabe umgewandelt wird. Hier wird es im Skriptblock festgelegt, der den Zeichenfolgenwert der Eingabe (Array aus der Pipe) zurückgibt, die vom Befehl ausgeführt wird &
. Ich wusste $ofs
vorher nichts darüber und &
akzeptierte einen Skriptblock als Argument
Sie können den folgenden Typ angeben:
[string[]] $a = "This", "Is", "a", "cat"
Überprüfen des Typs:
$a.GetType()
Bestätigt:
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String [] System.Array
Ausgabe von $ a:
PS C: \> $ a Dies Ist ein Katze
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent