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-Key: 286820

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

Printed on: April 24, 2024 at 07:04 o'clock

Mitglied: 114757
Solution 114757 Oct 27, 2015 updated at 19:49:15 (UTC)
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
Member: TlBERlUS
TlBERlUS Oct 27, 2015 updated at 14:40:20 (UTC)
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