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?
$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
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.
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
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'
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
$a = "This", "Is", "a", "cat"
foreach ( $Word in $a ) { $sent = "$sent $Word" }
$sent = $sent.Substring(1)
Write-Host $sent