Come posso convertire un oggetto array in stringa?
Provai:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
senza fortuna . Quali sono le diverse possibilità in PowerShell?
Come posso convertire un oggetto array in stringa?
Provai:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
senza fortuna . Quali sono le diverse possibilità in PowerShell?
Risposte:
$a = 'This', 'Is', 'a', 'cat'
Uso delle virgolette doppie (e facoltativamente utilizzare il separatore $ofs
)
# This Is a cat
"$a"
# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"
Utilizzo dell'operatore join
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
Utilizzando la conversione in [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
Ho scoperto che anche il piping dell'array al Out-String
cmdlet funziona bene.
Per esempio:
PS C:\> $a | out-string
This
Is
a
cat
Dipende dal tuo obiettivo finale su quale metodo è il migliore da usare.
$a
avrebbe lo stesso effetto di$a | out-string
($a | out-string).getType()
= String. $a.getType()
= Oggetto []. Se stai usando $ a come argomento per un metodo che prevede una stringa (come invoke-expression
ad esempio), allora $a | out-string
ha un chiaro vantaggio.
Da una pipa
# 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
è Output Field Separator
variabile utilizzata quando una matrice viene convertita in stringa per l'uscita. Qui è impostato nel blocco di script che restituisce il valore stringa dell'input (array dalla pipe) che viene eseguito dal comando &
. Non lo sapevo $ofs
prima, oltre ad &
accettare un blocco di script come argomento
È possibile specificare il tipo in questo modo:
[string[]] $a = "This", "Is", "a", "cat"
Verifica del tipo:
$a.GetType()
conferma:
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String [] System.Array
In uscita $ a:
PS C: \> $ a Questo È un' gatto
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent