Jak mogę przekonwertować obiekt tablicy na ciąg?
Próbowałem:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
bez szczęścia . Jakie są różne możliwości w PowerShell?
Jak mogę przekonwertować obiekt tablicy na ciąg?
Próbowałem:
$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)
bez szczęścia . Jakie są różne możliwości w PowerShell?
Odpowiedzi:
$a = 'This', 'Is', 'a', 'cat'
Używanie cudzysłowów (i opcjonalnie separatora $ofs
)
# This Is a cat
"$a"
# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"
Korzystanie z łączenia operatorów
# This-Is-a-cat
$a -join '-'
# ThisIsacat
-join $a
Korzystanie z konwersji do [string]
# This Is a cat
[string]$a
# This-Is-a-cat
$ofs = '-'
[string]$a
Okazało się, że przekierowanie tablicy do polecenia Out-String
cmdlet również działa dobrze.
Na przykład:
PS C:\> $a | out-string
This
Is
a
cat
To zależy od celu końcowego, która metoda jest najlepsza w użyciu.
$a
tego miałoby taki sam efekt jak$a | out-string
($a | out-string).getType()
= Ciąg. $a.getType()
= Obiekt []. Jeśli używasz $ a jako argumentu w metodzie oczekującej łańcucha ( invoke-expression
na przykład), $a | out-string
ma to wyraźną przewagę.
Z rury
# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}
# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}
Host zapisu
# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'
# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'
$ofs
Jest Output Field Separator
zmienny, który jest stosowany, gdy matryca jest przekształcany łańcucha wyjścia. Tutaj jest ustawiana w bloku skryptu, zwracając wartość ciągu wejściowego (tablica z potoku), która jest wykonywana przez polecenie &
. Nie wiedziałem o tym $ofs
wcześniej, a także o &
przyjęciu bloku skryptu jako argumentu
Możesz określić typ w ten sposób:
[string[]] $a = "This", "Is", "a", "cat"
Sprawdzanie typu:
$a.GetType()
Potwierdza:
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String [] System.Array
Wyprowadzanie $ a:
PS C: \> $ a To Jest za kot
$a = "This", "Is", "a", "cat"
foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)
Write-Host $sent