none
String zerlegen RRS feed

  • Frage

  • Ich bin ziemlich neu bei Powershell also verzeiht mir bitte meine Ahnungslosigkeit. Ich habe einen String der Art "@Peter @Thomas @Hans @..." Aus diesem String mit n-Namen möchte ich die Substrings $name1="Peter" $name2="Thomas" $name3="Hans" namen="..." haben, sowie den Wert von n. Vielleicht habt ihr eine Idee wie ich das möglichst elegant lösen kann.

    Vielen Dank schonmal für Eure Hilfe


    • Bearbeitet nu11ahnung Mittwoch, 26. September 2018 12:59
    Mittwoch, 26. September 2018 12:48

Antworten

  • Wenn Du mal den hier machst ....

    $Result | ForEach-Object {"'$($_)'"}

    ... siehst Du, dass in den Matches keine leerzeichen enthalten sind ... das regex "\w+" steht für "word charachter" und da gehören whitespaces nicht dazu.  ;-)

    Die einzelenen Namen alle einzelnen Variablen zuweisen sollte normalerweise nicht nötig sein. Du hast in  der Variablen $Result eine Sammlung von Elementen, über die Du mit Powershell-Mitteln drüber iterieren kannst.

    Was willst Du denn erreichen?


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 26. September 2018 13:37

Alle Antworten

  • Netter Nick!  ;-)  :-D ... änderst Du den irgendwann, wenn Du dann mal ein bissl merh Ahnung hast?  :-P

    Meinst Du sowas hier?

    $Result = Select-String -InputObject "@Peter @Thomas @Hans @Rudi @Franz" -Pattern '(?<=\@)\w+' -AllMatches | ForEach-Object {$_.Matches.Value}
    $Result.Count
    $Result



    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 26. September 2018 13:09
  • Vielleicht ändere ich meinen Nick irgendwann mal in 1bi55chenAhnung. Deine Antwort kommt dem schon sehr nahe. Ich muss nur noch die Substrings speichern. Also $Name1 = Peter, $Name2=Hans etc. Außerdem müssen die Leerzeichen zwischen den Namen weg. Sprich "Hans" und nicht "Hans "


    • Bearbeitet nu11ahnung Mittwoch, 26. September 2018 13:20
    Mittwoch, 26. September 2018 13:17
  • Wenn Du mal den hier machst ....

    $Result | ForEach-Object {"'$($_)'"}

    ... siehst Du, dass in den Matches keine leerzeichen enthalten sind ... das regex "\w+" steht für "word charachter" und da gehören whitespaces nicht dazu.  ;-)

    Die einzelenen Namen alle einzelnen Variablen zuweisen sollte normalerweise nicht nötig sein. Du hast in  der Variablen $Result eine Sammlung von Elementen, über die Du mit Powershell-Mitteln drüber iterieren kannst.

    Was willst Du denn erreichen?


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 26. September 2018 13:37
  • hab nicht gecheckt, dass das ein array ist. Ich arbeite gerade an einem Usermaker für AD und soweit läuft auch alles. Jetzt möchte ich in meine GUI noch ein Feature einbauen, dass diesem User bestimmte andere User zugewiesen werden (wenn nötig). Das geht im AD per Hand, aber es wäre schon besser, wenn man das gleich beim Erstellen machen kann.
    Mittwoch, 26. September 2018 13:45
  • Na prima ... klingt als wär Deine Frage damit beantwortet  .... supi.  :-D

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 26. September 2018 13:48