2012-07-25 39 views
11

我想自定義字符串數據集追加幾個字符串。的PowerShell - 弦追加

數據集的內容:

追加後
Test1 
Test2 
Test3 

結果:

Test1.com 
Test2.com 
Test3.com 

我將不得不使用正則表達式來解析到每個試驗[N]的結束能夠附加一個自定義字符串(.com)?有沒有人有一個例子,描述瞭如何做到這一點?

編輯:

好吧,我本來應該更具體。 我從一個SQL-表和寫入值讀入其導出爲CSV通過以下方式將DataSet:

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

數據集包含字符串,如:

Banana01 Banana02 Apple01 Cherry01 Cherry02 Cherry03

我想要做的事情是,將.com附加到Cherry01,Cherry02和Cherry03以及appending.com後,將其導出爲CSV。

回答

16

有很多方法。這裏有幾個:

# 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

謝謝。你能否給我舉個與我發佈的代碼有關的例子? – t1red 2012-07-25 13:08:01

+0

要添加到每個值的列標題是什麼? – 2012-07-25 13:12:00

+0

我想追加的所有字符串都有標題「vmname」 – t1red 2012-07-25 14:20:29

8

你可以使用這樣的事情:

例1

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

例2

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

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

與您添加的代碼我這樣做。我沒有一個數據庫來測試它,所以我做的數據手動設定,所以你可能只需要改變$的DataSet [0]在我的代碼$ 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

謝謝。我已經在我的文章中發佈了一些代碼,如果你可以看看它,會很酷。 – t1red 2012-07-25 13:07:01

+0

它很難測試,因爲我沒有訪問SQL,所以只是檢查出來,如果它不正確,我可以嘗試爲你解決它。 – justinf 2012-07-25 13:23:19

+0

謝謝。但我想這樣每個字符串都會被追加,不管它是以什麼開頭的。但是我只想追加那些以「Cherry#」開頭的.com,就像我在我的初始文章中的編輯中發佈的那樣。 – t1red 2012-07-25 14:24:32

0

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