Ich muss überprüfen, ob ein String irgendwelche Schimpfwörter enthält.C# - Schnellste Möglichkeit, einen Satz von Strings in einem anderen String zu finden
hier einige Ratschläge von einer anderen Frage Nach, machte ich eine HashSet, die die Worte:
HashSet<string> swearWords = new HashSet<string>() { "word_one", "word_two", "etc" };
Jetzt muss ich sehen, wenn eine der in swearWords
enthaltenen Werte in meinen String sind.
Ich habe es umgekehrt, zum Beispiel getan gesehen:
swearWords.Contains(myString)
Aber das wird false zurück.
Was ist der schnellste Weg zu überprüfen, ob eines der Wörter in der HashSet in myString
sind?
NB: Ich denke, ich kann eine foreach-Schleife verwenden, um jedes Wort der Reihe nach zu prüfen und zu brechen, wenn eine Übereinstimmung gefunden wird, ich frage mich nur, ob es einen schnelleren Weg gibt.
Warum sind Sie ein 'HashSet' verwenden? Könnte einfacher sein, 'List' hier zu verwenden. Dann spalte 'myString' in eine Liste und führe den notwendigen Vergleich durch. –
SkonJeet
@SkonJeet: Wenn die Liste der Schimpfwörter groß ist, wird die Suche nach Containment für ein 'HashSet' schneller als eine' List' sein - und ich kann nicht sehen, dass eine 'List' es * einfacher * machen würde. –
Ich benutzte ursprünglich eine Liste und wandelte sie dann in ein HashSet um, während ich las, dass sie schneller sind, um Werte in – surfitscrollit