Prüfen, ob string vorhanden ist in der Liste C#
Ich habe die Codierung ein Programm, dass speichert die Daten über Studierende (name und Alter) in einem .txt-Datei. Ich bin jetzt dabei die delete-Methode. Allerdings, wenn der Benutzer eine Zeichenfolge eingibt, soll ich ihn vergleichen, den Eingang zu den strings in meiner List<string>
, das ist voll von Namen. Code:
string tempFileName;
string inputSel; //Selection string for delete
Console.WriteLine(" -- Deleting Grade {0} -- ", grade);
Console.WriteLine("- Enter a student name to delete: ");
foreach (string file in fileNames)
{
tempFileName = file.Replace(".txt", "");
studentNames.Add(tempFileName);
}
foreach (string name in studentNames)
{
Console.Write("{0}\n", name);
}
Console.WriteLine();
Console.Write("> ");
inputSel = Console.ReadLine();
string input = inputSel.ToLower();
string tempString;
bool foundString = false;
foreach (string file in studentNames)
{
tempString = file.ToLower();
if (inputSel == tempString)
{
foundString = true;
}
}
if (!foundString)
{
Console.WriteLine("Wrong name entered!");
Console.WriteLine("Returning to grades menu..");
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
return;
}
Wie Sie sehen können, das Programm speichert inputSel
in input
(ToLower()), dann vergleicht jeder string in studentNames List<string>
, und wenn es eine übereinstimmung findet, es spiegelt das foundString bool
aber selbst wenn ich einen Namen eingeben, der übereinstimmungen (zum Beispiel, es sagt JacobMusterson, geben Sie mir JacobMusterson, sollte es überspringen, der "student nicht gefunden", aber es funktioniert nicht.
- vergessen Sie nicht zu akzeptieren hilfreiche Antworten
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollten Sie verwenden, input nicht inputSel
wegen der Zeile:
wo Sie sind assinging Eingabe niedrigeren version inputSel
Ich schlage vor, Sie verwenden IngonreCase in der Zeichenkette.Vergleichen Sie für nicht machen ToLower()
es gibt 0 zurück, wenn gleich sehen hier
EDIT:
persönlich würde ich verwenden:
können Sie einfach tun, es auf diese Weise:
Wird es besser lesbar und wirksam, wenn Sie verwenden
Contains
Methode derList
:werden kann umschreiben:
Einfach einen kleinen Kommentar auf deiner foreach-Schleife. Sie immer Durchlaufen alle Einträge in der Schleife, auch wenn Sie bereits herausgefunden, dass die Zeichenfolge in der Sammlung.
Verbessern Sie die performance Ihres Codes durch den Austausch der letzten foreach.
Versuchen: