Wie kann ich 2 Strings überprüfen ob sie ein gleiches Wort enthalten?
Unsolved
German
-
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:- Split each string into its words (
QString::split()
). - Store these words in 2 separate lists (
QStringList
). - 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 aQMap
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 ? :)
- Split each string into its words (
-
@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(); }