web-dev-qa-db-ja.com

PowerShellで配列オブジェクトを文字列に変換する方法を教えてください。

配列オブジェクトを文字列に変換する方法

私は試した:

$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)

運なしで。 PowerShellのさまざまな可能性は何ですか?

141
jrara
$a = 'This', 'Is', 'a', 'cat'

二重引用符の使用(およびオプションで区切り文字$ofsの使用)

# This Is a cat
"$a"

# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"

演算子結合を使用する

# This-Is-a-cat
$a -join '-'

# ThisIsacat
-join $a

[string]への変換を使用する

# This Is a cat
[string]$a

# This-Is-a-cat
$ofs = '-'
[string]$a
245
Roman Kuzmin

配列を Out-String コマンドレットにパイプ処理してもうまくいくことがわかりました。

例えば:

PS C:\> $a  | out-string

This
Is
a
cat

どちらの方法を使用するのが最善かについては、最終目標によって異なります。

29
Jeremy Saunders
1> $a = "This", "Is", "a", "cat"

2> [system.String]::Join(" ", $a)

2行目は操作を実行し、Hostに出力しますが、$ aは変更しません。

3> $a = [system.String]::Join(" ", $a)

4> $a

これは猫です

5> $a.Count

1
15
TCC

パイプから

# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}

# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}

書き込みホスト

# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'

# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'

7
Steven Penny

あなたはこのようにタイプを指定することができます:

[string[]] $a = "This", "Is", "a", "cat"

タイプを確認する

$a.GetType()

確認します。

 IsPublic IsSerial名BaseType 
 -------- -------- ---- -------- 
 True True String [] System.Array 

$ aを出力する:

PS C:\> $ a 
これは
 a 
ねこ
3
Ameer Deen
$a = "This", "Is", "a", "cat"

foreach ( $Word in $a ) { $sent = "$sent $Word" }
$sent = $sent.Substring(1)

Write-Host $sent
0
Underverse