2011-10-11 34 views
102

Làm cách nào để chuyển đổi đối tượng mảng thành chuỗi?Làm cách nào để chuyển đổi đối tượng mảng thành chuỗi trong PowerShell?

tôi đã cố gắng:

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

không có may mắn. Khả năng khác nhau trong PowerShell là gì?

+3

Xem câu trả lời của tôi, nhưng mã của bạn làm việc tốt, quá. Tại sao bạn nói "không may mắn"? –

+3

Xin lỗi, vâng, có vẻ như nó hoạt động, tôi nghĩ tôi đã làm hỏng điều gì đó khi tôi thử nghiệm điều này. – jrara

Trả lời

190
$a = 'This', 'Is', 'a', 'cat' 

Sử dụng dấu ngoặc kép (và tùy chọn sử dụng các dấu phân cách $ofs)

# This Is a cat 
"$a" 

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

Sử dụng toán tử tham gia

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

# ThisIsacat 
-join $a 

Sử dụng chuyển đổi sang [string]

# This Is a cat 
[string]$a 

# This-Is-a-cat 
$ofs = '-' 
[string]$a 
+5

Đối với un-starting (như tôi) '$ ofs' được ghi lại [ở đây] (http: // stackoverflow.com/documentation/powershell/5353/automatic-variables/19045/ofs) – Liam

+3

Tài liệu Stackoverflow đã bị đóng cửa nên liên kết của Liam đã chết. Dưới đây là giải thích khác về $ OFS, Dấu tách trường đầu ra: https://blogs.msdn.microsoft.com/powershell/2006/07/15/psmdtagfaq-what-is-ofs/ –

2

Bạn có thể chỉ định kiểu như thế này:

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

Kiểm tra loại:

$a.GetType() 

xác nhận:

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

Xuất ra $ a:

 
PS C:\> $a 
This 
Is 
a 
cat 
26

Tôi thấy rằng đường ống mảng với lệnh ghép ngắn out-string cũng hoạt động tốt.

Ví dụ:

PS C:\> $a | out-string 

This 
Is 
a 
cat 

Nó phụ thuộc vào mục tiêu cuối cùng của bạn là để có phương pháp là tốt nhất để sử dụng.

+3

FYI: chỉ cần thực hiện '$ a' sẽ có tác dụng tương tự như '$ a | out-string' – JohnLBevan

+7

@JohnLBevan Không phải lúc nào cũng vậy. '($ a | out-string) .getType()' = Chuỗi. '$ a.getType()' = Đối tượng []. Nếu bạn đang sử dụng $ a làm đối số cho một phương thức mong đợi một chuỗi (ví dụ như 'gọi-biểu thức' chẳng hạn), thì' $ a | out-string' có lợi thế rõ ràng. – rojo

5

Từ một ống

# 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' 

Example

11
1> $a = "This", "Is", "a", "cat" 

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

Dòng hai thực hiện các hoạt động và kết quả đầu ra để lưu trữ, nhưng không sửa đổi $ một :

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

4> $a 

Đây có phải là một con mèo

5> $a.Count 

1 
0
$a = "This", "Is", "a", "cat" 

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

Write-Host $sent 
Các vấn đề liên quan