2012-07-25 25 views
11

Tôi muốn nối thêm một số chuỗi trong một Tập dữ liệu với các chuỗi tùy chỉnh.PowerShell - nối chuỗi

Ví dụ

Nội dung của Dataset:

Test1 
Test2 
Test3 

Kết quả sau khi gắn thêm:

Test1.com 
Test2.com 
Test3.com 

Tôi sẽ phải sử dụng regex để phân tích cú pháp để cuối mỗi thử nghiệm [n] để có thể nối nó với một chuỗi tùy chỉnh (.com)? Có ai có một ví dụ mô tả chính xác làm thế nào để làm điều đó?

EDIT:

Ok, tôi cần phải có được cụ thể hơn. Tôi đọc từ một SQL-Table và các giá trị văn vào một DataSet được xuất khẩu sang CSV theo cách sau:

$DataSet.Tables[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation |`% { $_ -replace '"','' } | out-file $outfile -Encoding "unicode" 

Các DataSet chứa của Strings như:

Banana01 Banana02 Apple01 Cherry01 Cherry02 Cherry03

Điều tôi muốn làm là gắn thêm .com vào chỉ Cherry01, Cherry02 và Cherry03 và sau appending.com, xuất dưới dạng CSV.

Trả lời

16

Có nhiều cách. Dưới đây là một vài ví dụ:

# Using string concatenation 
'Test1','Test2','Test3' | Foreach-Object{ $_ + '.com' } 

# Using string expansion 
'Test1','Test2','Test3' | Foreach-Object{ "$_.com" } 

# Using string format 
'Test1','Test2','Test3' | Foreach-Object{ "{0}{1}" -f $_,'.com' } 
+0

Cảm ơn bạn. Bạn có thể cho tôi một ví dụ liên quan đến mã mà tôi đã đăng không? – t1red

+0

Tiêu đề cột cho mỗi giá trị bạn muốn thêm vào là gì? –

+0

Tất cả các chuỗi tôi muốn nối thêm có tiêu đề "vmname" – t1red

8

Bạn có thể sử dụng một cái gì đó như thế này:

Ví dụ 1

$t = "test" 
$t = $t + ".com" 

Ví dụ 2

$test = @("test1","test2") 

$test | ForEach-Object { 
$t = $_ + ".com" 
Write-Host $t} 

Với mã bị sang trọng và tôi đã làm điều này. Tôi không có cơ sở dữ liệu để kiểm tra nó, vì vậy tôi đã tạo bộ dữ liệu theo cách thủ công, vì vậy bạn có thể chỉ cần thay đổi $ Số liệu [0] trong mã của tôi thành $ DataSet.Tables [0].

$DataSet[0] | ConvertTO-Csv -Delimiter ',' -NotypeInformation | Foreach-Object{$T=$_ 
IF($T -match "(Cherry\d\d)"){$T = $T -replace "(Cherry\d\d)(.+)",'$1.com$2'};$T } | out-file $outfile -Encoding "unicode" 
+0

Cảm ơn bạn. Tôi đã đăng một số mã trong bài viết của tôi, sẽ được mát mẻ nếu u có thể có một cái nhìn vào nó. – t1red

+0

Khó khăn của nó để kiểm tra nguyên nhân tôi không có quyền truy cập vào sql, vì vậy chỉ cần kiểm tra xem nó ra và nếu nó không chính xác tôi có thể thử sắp xếp nó ra cho bạn. – justinf

+0

Cảm ơn. Nhưng tôi nghĩ theo cách này, mỗi chuỗi sẽ được thêm vào, bất kể nó bắt đầu bằng cái gì .. Nhưng tôi chỉ muốn nối thêm với .com bắt đầu bằng "Cherry #", như tôi đã đăng trong bản chỉnh sửa trong bài viết đầu tiên của mình. – t1red

0

$array | %{if($_ -match "^Cherry\d\d"){$_ += ".com"};$_}