none
String Bearbeitung RRS feed

  • Frage

  • Hallo, ich möchte alle Namen aus einer Liste auslesen lassen.

    Die Namen wurden so eingetragen: Vorname1 Vorname2 Nachname1 Nachname2

    Mit $_["User"].Split(" ") kann ich die Namen trennen. Ich möchte diese Ergebnis erreichen Nachname1 Nachname2, Vorname1 Vorname2

    Wie würden die Funktionen dazu heißen?

    Viele Grüße

    Freitag, 3. März 2017 12:33

Antworten

  • $a = 'Kevin Pascal Meyer Müller'
    $Vorname1 = $a.Split(' ')[0]
    $Vorname2 = $a.Split(' ')[1]
    $Nachname1 = $a.Split(' ')[2]
    $Nachname2 = $a.Split(' ')[3]
    
    "$Nachname1 $Nachname2, $Vorname1 $Vorname2"

    Allerdings wird es sofort Probleme geben, wenn ein Eintrag nur einen Vornamen oder Nachnamen hat. Am besten wäre es, wenn deine Quelldatei so aussehen würde:

    "Vorname1","Vorname2","Nachname1","Nachname2"
    "Bernd","Michael","Meyer",""
    "Torben","","Petersen",""



    Freitag, 3. März 2017 13:07
  • Hi,

    das würde auch gehen:

    $NamenListe = 'Kevin Pascal Meyer Müller'
    $Vorname1, $Vorname2, $Nachname1, $Nachname2 = $NamenListe.Split(' ')
    "$Nachname1 $Nachname2, $Vorname1 $Vorname2"
    
    
    Beste Gruesse
    brima

    Freitag, 3. März 2017 19:52
  • So gut wie die bisherigen Tipps sind, kann das aber eigentlich alles nur funktionieren, wenn bestimmte Bedingungen erfüllt sind, wie:

    • das zu jedem Nachnamen auch ein Vorname existiert
    • das zu jedem Nachnamen nur genau ein Vorname existiert
    • das kein Vornamen- oder Nachnamen-Eintrag ein Leerzeichen enthält ("Karl Heinz")
    • das keine Titel wie "Dr. " eingetragen sind
     

    Außerdem nehme ich ja mal an, das du nicht nur 4 Namen sondern hunderte in der Liste hast. :)
    Wenn das alles so ist, dann kannst du Einträge mit split(" ") trennen, das entstandene Array bei der Hälfte teilen (bedenke hier das ein Array bei [0] beginnt, nicht bei [1]) und in umgekehrter Reihenfolge wieder zusammenfügen.

    $Alt = 'Horst Jens Dieter Peter Hans Michael Müller Berg Meier Schmitt Hansen Peterson'
     
    $Alt = $Alt.Split(" ")
    $Neu = ($Alt[($Alt.Count/2)..($Alt.count)] + $Alt[0..(($Alt.Count/2) -1)]) -join " "
     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Montag, 6. März 2017 13:21
    Moderator

Alle Antworten

  • $a = 'Kevin Pascal Meyer Müller'
    $Vorname1 = $a.Split(' ')[0]
    $Vorname2 = $a.Split(' ')[1]
    $Nachname1 = $a.Split(' ')[2]
    $Nachname2 = $a.Split(' ')[3]
    
    "$Nachname1 $Nachname2, $Vorname1 $Vorname2"

    Allerdings wird es sofort Probleme geben, wenn ein Eintrag nur einen Vornamen oder Nachnamen hat. Am besten wäre es, wenn deine Quelldatei so aussehen würde:

    "Vorname1","Vorname2","Nachname1","Nachname2"
    "Bernd","Michael","Meyer",""
    "Torben","","Petersen",""



    Freitag, 3. März 2017 13:07
  • ... und wenn man's drauf anlegt, könnte  man da jetzt noch "ein paar Buchstaben sparen"  ;-)
    $a = 'Kevin Pascal Meyer Müller' -split(' ')
    "$($a[2]) $($a[3]), $($a[0]) $($a[1])"


    Grüße - Best regards

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

    Freitag, 3. März 2017 14:37
  • Hi,

    das würde auch gehen:

    $NamenListe = 'Kevin Pascal Meyer Müller'
    $Vorname1, $Vorname2, $Nachname1, $Nachname2 = $NamenListe.Split(' ')
    "$Nachname1 $Nachname2, $Vorname1 $Vorname2"
    
    
    Beste Gruesse
    brima

    Freitag, 3. März 2017 19:52
  • So gut wie die bisherigen Tipps sind, kann das aber eigentlich alles nur funktionieren, wenn bestimmte Bedingungen erfüllt sind, wie:

    • das zu jedem Nachnamen auch ein Vorname existiert
    • das zu jedem Nachnamen nur genau ein Vorname existiert
    • das kein Vornamen- oder Nachnamen-Eintrag ein Leerzeichen enthält ("Karl Heinz")
    • das keine Titel wie "Dr. " eingetragen sind
     

    Außerdem nehme ich ja mal an, das du nicht nur 4 Namen sondern hunderte in der Liste hast. :)
    Wenn das alles so ist, dann kannst du Einträge mit split(" ") trennen, das entstandene Array bei der Hälfte teilen (bedenke hier das ein Array bei [0] beginnt, nicht bei [1]) und in umgekehrter Reihenfolge wieder zusammenfügen.

    $Alt = 'Horst Jens Dieter Peter Hans Michael Müller Berg Meier Schmitt Hansen Peterson'
     
    $Alt = $Alt.Split(" ")
    $Neu = ($Alt[($Alt.Count/2)..($Alt.count)] + $Alt[0..(($Alt.Count/2) -1)]) -join " "
     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Montag, 6. März 2017 13:21
    Moderator