Seite 1 von 1

Unterschiede zweier Strings ermitteln

Verfasst: 24. November 2006 19:21
von Locutus
Hallo!

Ich habe hier ein technisches Problem und würde gerne mal hören wie die fortgeschrittenen Programmierer dieses angehen würden.

Also ich habe zwei QStrings mit nahezu identischen Inhalt. Wie kann man am elegantesten die Unterschiede ermitteln?
Beispiel:
String1: "Das ist ein Test"
String2: "Das war ein Test"

Also das er mir "ist" oder "war" als Unterschied ausgibt, je nachdem ob ich 1 mit 2 oder 2 mit 1 vergleiche.

Ich würde das Problem so angehen, daß ich beide Strings splitte und in einer QStringList ablege und durch die Elemente loope und doppelte lösche.
Wäre das der eleganteste Weg oder gibt's da einen besseren Kniff?


Meine zweite Frage hat was mit RegExp zu tun. Ich möchte die beiden Strings vorher von diversen Zeichen bereinigen, unter anderen auch Anführungszeichen.
Mein Pattern sieht wie folgt aus "[.,:;?]+". Ich würde jedoch auch gerne noch Anführungszeichen löschen lassen, wenn ich jedoch den Pattern mit einfachen Anführungszeichen umschließe ('[".,:;?]+') und das Anführungszeichen mit einfüge im Pattern, bekomme ich die Fehlermeldung "Zu viele Zeichen in der Konstante".
\\" bringt leider auch nichts.

Könnte mir da jemand einen Tip geben, wie ich das Anführungszeichen mit einfügen kann? Unter VB konnte man das mit CHR$ aber unter C++ weiß ich es leider nicht.

Gruß,
Locutus

Verfasst: 24. November 2006 21:11
von upsala
Kommt drauf an,wie genau du die Differenz brauchst:
Per split beide Sätze an den Wortgrenzen aufteilen, in QSet<QString> einfügen. QSet kann dann per subtract die Differenzen (ohne Einhaltung einer Reihenfolge) ermitteln.

Konstanten sind max. char also 'a' oder '.'. (Wir sind hier nicht bei PHP/Perl...) Du suchst "\".,:?"

Verfasst: 25. November 2006 08:34
von Locutus
Wow, QSet kannte ich noch gar nicht. Laut Anleitung genau das was ich brauche und das mit dem Anführungszeichen klappt nun auch.
Besten Dank! :D