derhoeppi
Goto Top

PowerShell Array Replace()

Hallo,

ich habe ein Array, dass derzeit Daten aus einer CSV Datei importiert. Der Aufbau der CSV sieht so aus:

Name;Versuch;Kommentar
Max;2;k.A.
Ingrid;2;k.A.
Peter;2;Peter ist der neue Max

Ich möchte nun den Namen Peter durch Max ersetzen. Dabei möchte ich verhindern, dass der Kommentar geändert wird. Bisher habe ich das bei einem einfachen Array immer durch die Methode Replace() angewandt, aber wenn ich das mit dem Array mache, wird nicht nur der Name sondern auch der Kommentar geändert.
$arr = $arr -replace("Peter", "Max")  

Wie kann ich die Methode Replace nur auf den Namen anwenden?

Gruß
derhoeppi

Content-ID: 286820

Url: https://administrator.de/contentid/286820

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

114757
Lösung 114757 27.10.2015 aktualisiert um 20:49:15 Uhr
Goto Top
$arr = @'  
Name;Versuch;Kommentar
Max;2;k.A.
Ingrid;2;k.A.
Peter;2;Peter ist der neue Max
'@ | convertfrom-csv -Delimiter ";"  

$arr | %{$_.Name = $_.Name -replace '^Peter$','Max'}  
$arr

oder alternativ auch:
$arr | ?{$_.Name -eq 'Peter'} | %{$_.Name = 'Max'}  
$arr
Gruß jodel32
TlBERlUS
TlBERlUS 27.10.2015 aktualisiert um 15:40:20 Uhr
Goto Top
Hi,

regex löst das Problem
clear-host
$arr = gc .\Desktop\test.csv
foreach($a in $arr){
$a  -replace "^(.?)Peter","Max"   
}

Edit: Jodel war mal wieder schneller