Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Wie kann ich 2 Strings überprüfen ob sie ein gleiches Wort enthalten?



  • Hallo, ich möchte in einer If Bedingung auf einfache Weise überprüfen, ob in 2 Strings jeweils (mindestens) 1 Wort identisch ist.
    Beipiel:
    String1 = "Wort1 Wort2 Wort3 Wort4 Wort5"
    String2 = "Wort3 Wort6 Wort8"
    Das Ergebnis soll Wahr sein, weil Wort3 ja in beiden Strings vorkommt.
    Ich suche also sowas wie If sting1.contains("ein Wort aus String2")
    Wie kann ich das realisieren?



  • @Urbi
    In Englisch:

    1. Split each string into its words (QString::split()).
    2. Store these words in 2 separate lists (QStringList).
    3. Foreach word1 in list1: Foreach word2 in list2: if word1 == word2 return found

    You can use list2.contains(word1) (QStringList::contains()).

    To make it fast, sort the list2 or store its words in a QMap so that you can look up to see if a word is there efficiently. Only needed if 100s of words.

    Muss ich ins Deutsche übersetzen ? :)


  • Moderators

    @Urbi
    da ich gerade am prokrastinieren bin...

    bool mindestensEinWortIstIdentisch( const QString &string1, const QString &string2, const QString &trennzeichen = QString(QChar::Space))
    {
        const auto liste = string2.splitRef(trennzeichen);
        for(const QStringRef &element : liste){
            if(string1.count(element) > 0)
                return true;
        }
        return false;
    }
    
    #include <QDebug>
    
    #include <QApplication>
    int main(int argc, char *argv[])
    {
    //    QApplication a(argc, argv);
    
        QString String1 = "Wort1 Wort2 Wort3 Wort4 Wort5";
        QString String2 = "Wort3 Wort6 Wort8";
    
        qDebug() << "Gefunden:" << mindestensEinWortIstIdentisch(String1, String2);
    
    //    return a.exec();
    }
    


  • Danke für eure Antworten. Werde ich bei Gelegenheit mal ausprobieren. Inzwischen habe ich das konkrete Problem auf eine ganz andere Art gelöst, sodass ich besagte If Abfrage nicht benötige. Benötigt noch einmal weniger Rechenzeit.


Log in to reply