innerhalb Zeichenkette Reihenfolge ändern



  • Hallo liebe Community,
    kurze Frage ich will innerhalb einer Zeichenkette die Reihenfolge ändern also aus "Peter Schmidt" soll "Schmidt, Peter" werden. Ich hab was von reorder gelesen, aber kein richtiges Beispiel gefunden. Kann mir jemand ein Beispiel und falls nötig auch ne Erklärung dazu schicken?



  • string name{"Peter Schmidt"};
    
    if(name == "Peter Schmidt")
      name = "Schmidt, Peter";
    


  • Folgende ToDos:

    • Original Zeichenkette an Leerzeichen trennen ( Stichwort: std::string::find_first_of, oder std:.string::find )
    • Sicherstellen, dass es nur zwei SubStrings gibt, sonst Formatierungsfehler
    • Beide Substrings neu zusammensetzen nach Bedarf


  • ich meine schon mit user input, also wie ich das letzte eingegebene Wort an den Anfang stelle





  • Habs selber rausgekriegt trotzdem vielen dank an alle☺ ☺



  • @KarlSr sagte in innerhalb Zeichenkette Reihenfolge ändern:

    ich meine schon mit user input, also wie ich das letzte eingegebene Wort an den Anfang stelle

    Das ist eine andere Aufgabe, als das mit Namen zu machen. In deinem Beispiel hattest du noch ein Komma drin. Beachte Details! Zusätzlich wird die Aufgabe mit Namen verkompliziert dadurch, dass es Doppelnamen etc. gibt. Man kann nicht immer ohne weitere Informationen entscheiden, wo man da korrekt Vor- und Nachnamen trennt.

    Die Aufgabe "letztes Wort an den Anfang" ist einfacher. Aber folge doch einfach den Punkten von @It0101

    Edit: es schadet nicht, bei der Aufgabenstellung pedantisch zu sein. Sonst gibst du nachher etwas zurück, was so nicht gewollt war.



  • Ja, @It0101 hat eigentlich alles geschrieben. Allerdings würde ich vermutlich rückwärts suchen.



  • Ja ich hab es auch ungefähr so wie @It0101 es geschrieben hat gemacht. Nicht genauso bin aber trotzdem auf das Richtige rausgekommen. Selbst mit 3 oder 4 Vornamen. Trotzdem vielen Dank an euch



  • @KarlSr sagte in innerhalb Zeichenkette Reihenfolge ändern:

    Selbst mit 3 oder 4 Vornamen. Trotzdem vielen Dank an euch

    Und was ist mit 2 Nachnamen? Ein Standard-Spanier hat 2 Nachnamen. Es gibt also bestimmt mehrere "Maria Rodriguez Lopez" (+Akzente).

    Am besten versucht man Namen überhaupt nicht maschinell zu splitten. Das geht immer irgendwo schief.



  • @wob Gut du hast zwar recht, aber ich beziehe mich hier mal auf deutsche Nachnamen😅 😅 Ich kenn das Problem ich hab für ne Weile in Spanien gelebt. Es gibt auch Leute, die 3 oder 4 Nachnamen hatten. Mein Lieblingsname war immer Alberto José Crespo-Sanchéz-Dominguez😂 😂



  • @KarlSr
    Mit meiner obigen Antwort auf Deinen Eingangspost wollte ich eigentlich erreichen, dass Du das zu lösende Problem genau beschreibst, bzw. bemerkst, dass Deine 'Problembeschreibung' ungeeignet ist, einen Algorithmus zu entwickeln.
    Ist mir wohl leider nicht gelungen ...



  • Dieser Beitrag wurde gelöscht!


  • @KarlSr sagte in innerhalb Zeichenkette Reihenfolge ändern:

    @wob Gut du hast zwar recht, aber ich beziehe mich hier mal auf deutsche Nachnamen😅 😅 Ich kenn das Problem ich hab für ne Weile in Spanien gelebt.

    Dazu kommen auch noch Kulturkreise wie in Japan, wo man den Nachnamen zuerst nennt oder auch deutsche Formularausfüllprofis die bei "Name?" intuitiv erstmal "Nachname, Vorname" eintragen. Das kann also nur eine Programmierübung werden - ich sehe nicht wie man die Stringbestandteile auf eine für den Produktiveinsatz geeignete Art zuverlässig klassifizieren könnte - vielleicht mit einer aufwändig trainierten KI, aber selbst die würde garantiert bei einigen Namen verkacken 😉



  • Vor- und Nachname unterscheiden geht nicht - zumindest nicht zuverlässig. Wenn einer Peter Paul heisst, dann viel Glück dabei rauszubekommen was der Vor- und was der Nachname ist.

    Als Programmierübung kann man sowas aber natürlich machen. z.B. könnte man definieren dass nur der erste Vorname eingegeben werden darf und die Reihenfolge immer Vorname-Nachname sein muss. Dann funktioniert das sogar bei Nachnamen wie Van der Bellen.

    Dann definiert man noch dass der Vorname ggf. mit Bindestricht statt Leerzeichen geschrieben werden muss (bei Namen wie Hans-Peter). Vornamen die aus zwei Teilen bestehen und nicht mit Bindestricht statt Leerzeichen geschrieben werden können fallen mir jetzt keine ein. D.h. ein System mit diesen Regeln würde sogar wirklich den meisten Leuten erlauben ihren Namen einzugeben ohne ihn gröber zu verstümmeln.



  • Natürlich ist das eine Übung. Ich geh mein komplettes Übungsbuch durch. Ich hab c++ früher schon mal angefangen hab dann aber kurz darauf wieder aufgehört. Jetzt will ich es richtig machen und mache jeden manchmal auch jeden 2.ten Tag eine Aufgabe. Ich glaube hier wurde meine Aufgabe etwas zu ernst genommen😁 😁 Trotzdem finde ich es schön dass sich hier so viele Gedanken darum machen. Ich habe mich schon bei anderen Hilfsforen (nicht nur zum Programmieren) angemeldet. Die Community hier ist aber einer der Hilfsbereitesten. vielen Dank



  • @KarlSr sagte in innerhalb Zeichenkette Reihenfolge ändern:

    Ich glaube hier wurde meine Aufgabe etwas zu ernst genommen😁 😁

    Ich denke das passiert deshalb, weil extrem viel schlechte Software geschrieben wurde die solche Dinge falsch macht - und vermutlich auch immer noch viel solche Software geschrieben wird. Daher macht es schon Sinn selbst bei einer Übungsaufgabe darauf hinzuweisen.

    Bei Namen sieht man das hier im Forum vermutlich weniger - ich denke da werden die Leute die dazu tendieren es falsch zu machen es einfach falsch machen ohne nachzufragen. Was aber öfter mal vorkommt sind Fragen zum Thema Zeitzonen/Zeitrechnung/Datumsrechnung. Da dürfen wir immer wieder Leute aufklären dass das alles viel komplizierter ist als sie es sich vorgestellt haben 🙂



  • @KarlSr sagte in innerhalb Zeichenkette Reihenfolge ändern:

    Die Community hier ist aber einer der Hilfsbereitesten.

    Nene, da musst Du was missverstanden haben. Wir sind unfreundliche selbstgerechte n00bszerbeißende Monster!


Anmelden zum Antworten