Comment puis-je convertir un objet tableau en chaîne?
J'ai essayé:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
sans chance . Quelles sont les différentes possibilités dans PowerShell?
Comment puis-je convertir un objet tableau en chaîne?
J'ai essayé:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
sans chance . Quelles sont les différentes possibilités dans PowerShell?
Réponses:
$a = 'This', 'Is', 'a', 'cat'
Utiliser des guillemets doubles (et éventuellement utiliser le séparateur $ofs
)
# This Is a cat
"$a"
# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"
Utilisation de la jointure d'opérateur
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
Utilisation de la conversion en [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
J'ai trouvé que la canalisation du tableau vers l' Out-String
applet de commande fonctionne bien aussi.
Par exemple:
PS C:\> $a | out-string
This
Is
a
cat
Cela dépend de votre objectif final quant à la meilleure méthode à utiliser.
$a
aurait le même effet que$a | out-string
($a | out-string).getType()
= Chaîne. $a.getType()
= Objet []. Si vous utilisez $ a comme argument pour une méthode qui attend une chaîne (comme invoke-expression
par exemple), cela $a | out-string
présente un net avantage.
D'un tuyau
# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}
# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}
Hôte d'écriture
# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'
# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'
$ofs
is Output Field Separator
qui est utilisée lorsqu'un tableau est converti en chaîne pour la sortie. Ici, il est défini dans le bloc de script renvoyant la valeur de chaîne de l'entrée (tableau du tube) qui est exécutée par la commande &
. Je ne savais pas $ofs
avant, ainsi que d' &
accepter un bloc de script comme argument
Vous pouvez spécifier le type comme ceci:
[string[]] $a = "This", "Is", "a", "cat"
Vérification du type:
$a.GetType()
Confirme:
IsPublic Nom IsSerial BaseType -------- -------- ---- -------- True True String [] System.Array
Sortie de $ a:
PS C: \> $ a Ce Est une chat
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent