Leere Array-Werte aus einem Array entfernen
Hallo zusammen,
ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames bzw. E-Mail-Adressen, habe ich dem Skript ein RitchText-Element (System.Windows.Forms.RichtText) hinzugefügt.
Damit der User möglichst flexibel bei der Eingabe ist, ersetze ich alle "," und ";" durch Leerzeichen, um am Ende ein $array.split(" ") durchzuführen, um an Hand der Leerzeichen ein Array mit sämtlichen Eingaben zu generieren.
Soweit funktioniert das auch prima. Das Problem ist, dass dadurch auch leere Array-Werte entstehen, wenn der User z.B. pro Eingabe einen Zeilenumbruch macht. Um bei der späteren Verarbeitung also keine Probleme zu bekommen, möchte ich gerne die leeren Array-Werte entfernen.
Mein Ansatz bisher sieht wie folgt aus:
In $value erwarte ich also die leeren Werte, die ich gerne herausfiltern möchte.
Ich habe sowohl -ne "", als auch diverse RegEx-Paterns ausprobiert, aber die leeren Werte bleiben immer drin.
Auch ein
-not ($value -match '.*[\s]+')
funktioniert nicht.
An sich habe ich sogut wie jede Möglichkeit, die mir eingefallen ist, ausprobiert, aber die leeren Array-Werte bleiben drin...
Kann mir hier jemand helfen und mir ggf. einen Tipp geben?
Viele Grüße
Toni
ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames bzw. E-Mail-Adressen, habe ich dem Skript ein RitchText-Element (System.Windows.Forms.RichtText) hinzugefügt.
Damit der User möglichst flexibel bei der Eingabe ist, ersetze ich alle "," und ";" durch Leerzeichen, um am Ende ein $array.split(" ") durchzuführen, um an Hand der Leerzeichen ein Array mit sämtlichen Eingaben zu generieren.
Soweit funktioniert das auch prima. Das Problem ist, dass dadurch auch leere Array-Werte entstehen, wenn der User z.B. pro Eingabe einen Zeilenumbruch macht. Um bei der späteren Verarbeitung also keine Probleme zu bekommen, möchte ich gerne die leeren Array-Werte entfernen.
Mein Ansatz bisher sieht wie folgt aus:
Hallo zusammen,
ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames bzw. E-Mail-Adressen, habe ich dem Skript ein RitchText-Element (System.Windows.Forms.RichtText) hinzugefügt.
Damit der User möglichst flexibel bei der Eingabe ist, ersetze ich alle "," und ";" durch Leerzeichen, um am Ende ein $array.split(" ") durchzuführen, um an Hand der Leerzeichen ein Array mit sämtlichen Eingaben zu generieren.
Soweit funktioniert das auch prima. Das Problem ist, dass dadurch auch leere Array-Werte entstehen, wenn der User z.B. pro Eingabe einen Zeilenumbruch macht. Um bei der späteren Verarbeitung also keine Probleme zu bekommen, möchte ich gerne die leeren Array-Werte entfernen.
Mein Ansatz bisher sieht wie folgt aus:
[code]
$on_AcceptBtn_click =
{
if($notempty)
{
if($textbox.Text -eq "")
{
return [System.Windows.Forms.MessageBox]::Show('Es wurden keine Accounts eingetragen', 'Fehler: Keine Eingaben')
}
}
$form.close()
$text = $textbox.Text
$text = $text.replace(',', ' ')
$text = $text.replace(';', ' ')
$text = $text.split("[ ]")
$array_tmp = @()
Foreach ($value IN $text )
{
if($value -notlike " ")
{
$array_tmp += $value.trim(" ")
}
}
$global:textArray = $array_tmp | WHERE { $_ -ne " " }
return $global:textArray
}
[/code]
In $value erwarte ich also die leeren Werte, die ich gerne herausfiltern möchte.
Ich habe sowohl -ne "", als auch diverse RegEx-Paterns ausprobiert, aber die leeren Werte bleiben immer drin.
Auch ein
-not ($value -match '.*[\s]+')
funktioniert nicht.
An sich habe ich sogut wie jede Möglichkeit, die mir eingefallen ist, ausprobiert, aber die leeren Array-Werte bleiben drin...
Kann mir hier jemand helfen und mir ggf. einen Tipp geben?
Viele Grüße
Toni
In $value erwarte ich also die leeren Werte, die ich gerne herausfiltern möchte.
Ich habe sowohl -ne "", als auch diverse RegEx-Paterns ausprobiert, aber die leeren Werte bleiben immer drin.
Auch ein
-not ($value -match '.*[\s]+')
funktioniert nicht.
An sich habe ich sogut wie jede Möglichkeit, die mir eingefallen ist, ausprobiert, aber die leeren Array-Werte bleiben drin...
Kann mir hier jemand helfen und mir ggf. einen Tipp geben?
Viele Grüße
Toni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316247
Url: https://administrator.de/contentid/316247
Ausgedruckt am: 23.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Toni,
erstens warum nutzt du überhaupt ein Richtextfeld für sowas??? Das wäre eher was für ein DataGridView in dem jede Adresse ein eigenes Feld bekommt, da entfällt diese etwas komische Herangehensweise.
Das Splitten würde ich eher mit Regex direkt auf einen Schlag so machen:
Und wenn dann immer noch was unsichtbares übrig sein sollte wird das mit
aus dem Array getilgt
Grüße Uwe
erstens warum nutzt du überhaupt ein Richtextfeld für sowas??? Das wäre eher was für ein DataGridView in dem jede Adresse ein eigenes Feld bekommt, da entfällt diese etwas komische Herangehensweise.
Das Splitten würde ich eher mit Regex direkt auf einen Schlag so machen:
$array = $text -split "[,;\[\]]|\s+"
$array = $array | ?{$_ -notmatch '^\s*$'}
Grüße Uwe