2012-07-20 17 views
2

我是PowerShell的新手,所以這可能很容易回答。假設我創建這樣一個數組:如何從對象轉換爲字符串

$array1 = "a", "b", "c" 

然後,我創建另一個數組:

$array2 = $array1|select-object{$_} 

我想這樣做是爲了參加在$數組2中的所有值,所以我結束了字符串「abc」,但在$ array2上使用-join「」只會產生一個空的結果。有人可以向我解釋我該如何解決這個問題?

+1

爲什麼在將'array1'複製到'array2'時使用'| select-object {$ _}'? – 2012-07-20 08:26:26

+0

這只是爲了強調我的例子。我絕對不會使用這個認證,但我想我不太清楚 – 2012-07-20 08:32:10

回答

2

只是$array2 = $array1 | select-object$array2 = $array1

$array1 = "a", "b", "c" 

#expected output: a b c 
$array1 -join " " 

#here it is 
$array2 = $array1 | select-object 

#expected output: a b c 
$array2 -join " " 

#here it is 
$array2 = $array1 

#expected output: a b c 
$array2 -join " " 
+0

感謝akim,刪除了{$ _}爲我工作! – 2012-07-20 08:32:37

0

修改

$array2 = $array1|select-object{$_} 

$array2 = $array1 

然後

$array2 -join ' ' 

作品!

1

一個簡單的方法更換$array2 = $array1|select-object{$_}做你需要在這裏的PowerShell是什麼這兩個

"$array1" 

'' + $array1 

將加盟數組元素爲$OFS或空間,如果$OFS$null

但正如其他人所指出的,您的Select-Object呼叫是錯誤的。選擇對象需要屬性名稱,而不是腳本塊。在這種情況下,你可能想要ForEach-Object

+0

怎麼樣這樣鑄造:''[string] $ array1'?這是一個好習慣嗎? – 2012-07-20 08:31:46

+0

也應該工作。如果這是你想要的,我認爲最好的做法是明確的「-join」。交互式我通常選擇最短的變體,主要是因爲我經常在PowerShell中打高爾夫球。 – Joey 2012-07-20 08:46:44