C# String vergleich ohne Beachtung der Groß- Kleinschreibung?
Hallo, ich habe seit gestern mit dem progammieren von C# angefangen.
Das Programm "Streamer.bot", das man mit Twitch verbinden kann, unterstützt eigene C# Codes und deshalb bin ich darauf gekommen mit dem "programmieren" anzufangen.
Ich habe einen Code erstellt, in dem ein Input (string msg) mit einer Textdatei (string[] blacklist) verglichen wird. In der Textdatei stehen alle Blacklist Wörter.
Nun bin ich auf das Problem gestoßen, dass die Groß- und Kleinschreibung bei dem vergleich beachtet wird und das ist bei einer Blacklist eher nachteilig.
Meine Frage an dieser Stelle ist, wie ich es schaffe, dass die Groß- und Kleinschreibung bei dem vergleich ignoriert wird.
Ich hoffe sehr, dass mir jemand helfen kann,
Liebe Grüße, JuuriiK :)
msg= Input eines users
blacklist= Blacklist txt datei
Im folgenden ist der Code:
using System;
using System.IO;
using System.Linq;
public class CPHInline
{
public bool Execute()
{
string userName = args["userName"].ToString();
string TOSmsg = args["TOSmsg"].ToString();
string msg = args["rawInput"].ToString();
string[] blacklist = File.ReadAllLines(args["blacklistDatei"].ToString());
string actionName = args["actionName"].ToString();
if (blacklist.Equals(msg))
{
CPH.TimeoutUser(args["user"].ToString(), 30);
CPH.SendMessage(TOSmsg);
}
else
{
CPH.RunAction(actionName);
}
return true;
}
}
2 Antworten
String.Equals Methode (System) | Microsoft Docs
Tut exakt das, was Du haben willst.
Abgesehen davon:
Fang vorne an mit den Grundlagen, also ein gutes Buch oder die einzige gute Tutorial-Reihe in der MSDN-Doku von Microsoft - keine Video-Tutorials. Das ist eine ganze Menge und das kannst Du nicht an einem Tag durchgearbeitet haben ;)
Und lerne recherchieren. Wenn Du dich unter die "ich erfrage jede Kleinigkeit auf gutefrage.net"-Anfänger gesellst, kannst Du's auch gleich bleiben lassen, Du wirst nie irgendwas damit erreichen. Effektive Recherche und das Stellen der richtigen Fragen ist eine der wichtigsten Fähigkeiten in dem Bereich.
Und schau dir die Metadaten von C# an, Visual Studio zeigt dir das mit F12 (Cursor auf einem Typ) oder der IntelliSense-Hilfe (such danach) an. Drüber kannst Du dir alles anschauen, was es gibt, das wird natürlich erschlagen, aber z.B. hättest Du die String.Equals-Methode ganz leicht gefunden, wenn Du dir alle Methoden vom String angeschaut hättest. Die allermeisten Dinge bei C# sind auch sehr gut aufgebaut und benannt, mit etwas Erfahrung und einem Gefühl für die Namen, kann man so sehr schnell fündig werden. Außerdem "lernt" VisualStudio 2022, wie Du arbeitest - ich bin immer wieder erstaunt, wie gut die Vorschläge sind.
Wenn Du so lernst, wie Du effektiv die Möglichkeiten selber durchforsten kannst, dann lernst Du sehr viel dabei und sparst auch noch Zeit.
Meine Frage an dieser Stelle ist, wie ich es schaffe, dass die Groß- und Kleinschreibung bei dem vergleich ignoriert wird.
https://docs.microsoft.com/de-de/dotnet/api/system.string.tolower?view=
Mit der Methode verwandelst du jedes Zeichen im String zu einem Kleinbuchstaben. Das vergleichst du dann mit denen im Filter hinterlegen Wörtern. Diese müssen aber natürlich auch alles aus Kleinbuchstaben bestehen.
Daher wäre die sicherste Methode zum Beispiel sowas:
string[] filter = {"Schimpfwort1", "Schimpfwort2", "Schimpfwort3", "Schimpfwort4"}
foreach (int f in filter) {
if (msg.toLower() == f.toLower()) {
//do stuff here, like delete the message...
}
}
Das verwandelt zum Vergleichen einfach beide Strings in Kleinbuchstaben um. Wobei du natürlich vergleichen willst, ob das gelistete Wort irgendwo im String vorkommt, daher müsstest du die if-Abfrage etwas anders stricken!
Stichwort:
https://docs.microsoft.com/de-de/dotnet/api/system.string.contains?view=net-6.0