2012-07-25 13 views
11

Ich möchte mehrere Zeichenfolgen in einem DataSet mit benutzerdefinierten Zeichenfolgen anfügen.PowerShell - Anfügen von Zeichenfolgen

Beispiel

Inhalt des Datensatzes:

Test1 
Test2 
Test3 

Ergebnis nach anhängt:

Test1.com 
Test2.com 
Test3.com 

Hätte ich Regex verwenden, um das Ende jedes Tests [n] zu analysieren um es mit einer benutzerdefinierten Zeichenfolge (.com) anhängen zu können? Hat jemand ein Beispiel, das genau beschreibt, wie es geht?

EDIT:

Ok, ich sollte präziser gewesen. Ich lese aus einer SQL-Tabelle und Schreiben von Werten in einen Datensatz, die CSV die folgende Art und Weise ausgeführt wird:

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

Der Datensatz enthält von Strings wie:

Banana01 Banana02 Apple01 Cherry01 Cherry03

Die Sache, die ich tun möchte, ist, .com an nur Cherry01, Cherry02 und Cherry03 anfügen und nach dem Anhängen von.com, es als CSV exportieren.

Antwort

16

Es gibt viele Möglichkeiten. Hier sind ein paar:

# 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

Vielen Dank. Können Sie mir ein Beispiel geben, das sich auf den Code bezieht, den ich gepostet habe? – t1red

+0

Was sind die Spaltenüberschriften für jeden Wert, den Sie anhängen möchten? –

+0

Alle Zeichenfolgen, die ich anhängen möchte, haben die Überschrift "vmname" – t1red

8

Man könnte so etwas wie folgt verwenden:

Beispiel 1

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

Beispiel 2

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

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

mit Ihren zusätzlichen Code, den ich das tat. Ich habe keine Datenbank, um es zu testen, also habe ich den Datensatz manuell erstellt, so dass Sie möglicherweise nur die $ DataSet [0] in meinem Code zu $ DataSet.Tables [0] ändern müssen.

$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

Danke. Ich habe einen Code in meinem Post gepostet, wäre cool, wenn du einen Blick darauf werfen könntest. – t1red

+0

Es ist schwer zu testen, weil ich keinen Zugriff auf SQL habe, also schau es einfach an und wenn es nicht korrekt ist, kann ich versuchen, es für dich zu sortieren. – justinf

+0

Danke. Aber ich denke auf diese Weise wird jeder String angehängt, egal womit er anfängt .. Aber ich möchte nur diejenigen mit .com anhängen, die mit "Cherry #" beginnen, wie ich in der Editierung in meinem ersten Post gepostet habe. – t1red

0

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

Verwandte Themen