Split und eine Zeile zuviel
Hallo,
ich habe das Problem das ich zwei Datensätze habe, diese mit Split bearbeite und drei Datensätze herausbekomme.
Soweit ich mich eingelesen habe, liegt es daran eine Outline(?) Funktion bei der Ausgabe immer noch einen Zeilenumbruch (?) hinten ansetzt. Probiert habe ich es mit Trim und split \s+. Half aber alles nicht es kommen immer wieder drei Datensätze im Array an.
Hier Code:
Das ist das Ergebnis:
Für jeden Rat dankbar.
schnerpf
ich habe das Problem das ich zwei Datensätze habe, diese mit Split bearbeite und drei Datensätze herausbekomme.
Soweit ich mich eingelesen habe, liegt es daran eine Outline(?) Funktion bei der Ausgabe immer noch einen Zeilenumbruch (?) hinten ansetzt. Probiert habe ich es mit Trim und split \s+. Half aber alles nicht es kommen immer wieder drei Datensätze im Array an.
Hier Code:
$Daten = "Name: PC01, SerialNumber: Nr01x, Name: PC02, SerialNumber: Nr02x"
cls
$ArrayDaten=@()
$ArrayDaten = $Daten -split "x"
foreach($k in $ArrayDaten)
{
echo "$k"
}
echo "Anzahl" $ArrayDaten.Length
Name: PC01, SerialNumber: Nr01
, Name: PC02, SerialNumber: Nr02
Anzahl
3
schnerpf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7762902951
Url: https://administrator.de/forum/split-und-eine-zeile-zuviel-7762902951.html
Ausgedruckt am: 16.03.2025 um 02:03 Uhr
4 Kommentare
Neuester Kommentar
Hi,
Wenn du die Dot.Net-Vatiante der Split-Methode verwendest, kannst du leere Elemente ganz einfach so löschen:
Und ein Hinweis:
Du musst ein Array nicht vorher initialisieren wenn du es mit -Split befüllen willst.
Das kannst du dir also sparen:
Macht nur Sinn wenn du diesen machen wollen würdest:
Grüße!
Wenn du die Dot.Net-Vatiante der Split-Methode verwendest, kannst du leere Elemente ganz einfach so löschen:
string.Split("x",[System.StringSplitOptions]::RemoveEmptyEntries)
Und ein Hinweis:
Du musst ein Array nicht vorher initialisieren wenn du es mit -Split befüllen willst.
Das kannst du dir also sparen:
$ArrayDaten=@()
Macht nur Sinn wenn du diesen machen wollen würdest:
$ArrayDaten=@()
ForEach($val in "a,b,c,d,e,f,g".Split(","))
{
$ArrayDaten += $val
}
Grüße!

Als Alternativen gehen auch
oder
oder
...
$oncedata = "Name: PC01, SerialNumber: Nr01x, Name: PC02, SerialNumber: Nr02x" -split 'x' | ?{$_ -notmatch '^\s*$'}
$oncedata = "Name: PC01, SerialNumber: Nr01x, Name: PC02, SerialNumber: Nr02x" -split 'x' | ?{$_.trim() -ne ''}
$oncedata = [regex]::matches("Name: PC01, SerialNumber: Nr01x, Name: PC02, SerialNumber: Nr02x",'(?i)(.+?)x').Captures | %{$_.Groups[1].Value}
Zitat von @Schnerpf:
Hallo mayho33,
vielen Dank für Deine Mühe. Da ich ein Newbi bin hatte ich eine liebe Not Deinen Vorschlag richtig interpretieren zu können.
👍😁 Sorry! Wollte dich nicht überfordern.Hallo mayho33,
vielen Dank für Deine Mühe. Da ich ein Newbi bin hatte ich eine liebe Not Deinen Vorschlag richtig interpretieren zu können.
Ich muss gestehen, ohne die Hilfe eines Kollegen, wäre ich ich darauf gekommen die Zeichenkette "string" vor ".splitt" als den zu ersetzende Platzhalter anzusehen.
Da habe ich wohl zu viel vorausgesetzt. Dachte das wäre klar.Dennoch vielen Dank für Deine Erläuterung, jetzt kann ich das endlich abschließen 
Gerne! Das war das große Ziel.