Übung: Verwenden der IndexOf()- und Substring()-Hilfsmethoden der Zeichenfolge
- 25 Minuten
In dieser Übung verwenden Sie die IndexOf() Methode, um die Position einer oder mehrerer Zeichen in einer größeren Zeichenfolge zu finden. Mit der Substring() Methode geben Sie den Teil der größeren Zeichenfolge zurück, der den von Ihnen angegebenen Zeichenpositionen folgt.
Sie verwenden auch eine überladene Version der Substring() Methode, um die Länge von Zeichen festzulegen, die nach einer angegebenen Position in einer Zeichenfolge zurückgegeben werden sollen.
Vorbereiten Ihrer Programmierumgebung
Dieses Modul enthält praktische Aktivitäten, die Sie durch den Prozess der Erstellung und Ausführung von Demonstrationscode führen. Es wird empfohlen, diese Aktivitäten mit Visual Studio Code als Entwicklungsumgebung durchzuführen. Die Verwendung von Visual Studio Code für diese Aktivitäten hilft Ihnen, sich mit dem Schreiben und Ausführen von Code in einer Entwicklerumgebung vertraut zu machen, die von Fachleuten weltweit verwendet wird.
Hinweis
Wenn Sie schon andere Microsoft Learn-Module in dieser C#-Reihe abgeschlossen haben, haben Sie möglicherweise bereits einen Projektordner für Codebeispiele erstellt. In diesem Fall können Sie den folgenden Abschnitt überspringen und den Code in der Datei Project.cs aus der vorherigen Übung löschen.
Öffnen Sie Visual Studio Code.
Sie können das Windows-Startmenü (oder eine entsprechende Ressource für ein anderes Betriebssystem) verwenden, um Visual Studio Code zu öffnen.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Navigieren Sie im Dialogfeld Ordner öffnen zum Windows-Ordner „Desktop“.
Wenn Sie Codeprojekte an einem anderen Ort speichern, können Sie stattdessen diesen Ordnerspeicherort verwenden. Für dieses Training ist es wichtig, einen Ort zu haben, den Sie leicht finden und sich gut merken können.
Klicken Sie im Dialogfeld Ordner öffnen auf Ordner auswählen.
Wenn ein Sicherheitsdialogfeld angezeigt wird, in dem Sie gefragt werden, ob Sie den Autor*innen vertrauen, wählen Sie Ja aus.
Klicken Sie im Visual Studio Code-Menü Terminal die Option Neues Terminal aus.
Beachten Sie, dass eine Eingabeaufforderung im Panel „Terminal“ den Ordnerpfad für den aktuellen Ordner anzeigt. Beispiel:
C:\Users\someuser\Desktop>Geben Sie an der Terminal-Eingabeaufforderung dotnet new console -o ./CsharpProjects/TestProject ein, um eine neue Konsolenanwendung in einem angegebenen Ordner zu erstellen, und drücken Sie dann die EINGABETASTE.
Dieser .NET-CLI-Befehl verwendet eine .NET-Programmvorlage, um ein neues C#-Konsolenanwendungsprojekt am angegebenen Ordnerspeicherort zu erstellen. Der Befehl erstellt die Ordner „CsharpProjects“ und „TestProject“ für Sie und verwendet „TestProject“ als Namen für die
.csproj-Datei.Erweitern Sie im Panel „Explorer“ den Ordner CsharpProjects.
Nun sollten der Ordner TestProject und zwei Dateien (eine C#-Programmdatei namens Program.cs und eine C#-Projektdatei namens TestProject.csproj) angezeigt werden.
Wählen Sie im Panel „Explorer“ Program.cs aus, um Ihre Codedatei im Editor-Panel anzuzeigen.
Löschen Sie die vorhandenen Codezeilen.
Sie verwenden dieses C#-Konsolenprojekt zum Erstellen und Ausführen von Codebeispielen im Rahmen dieses Moduls.
Schließen Sie das Panel „Terminal“.
Schreiben von Code zum Suchen von Klammerpaaren, die in eine Zeichenfolge eingebettet sind
Stellen Sie sicher, dass Visual Studio Code geöffnet ist und „Program.cs“ im Editor-Bereich angezeigt wird.
Hinweis
„Program.cs“ sollte leer sein. Wenn dies nicht der Fall ist, wählen Sie alle Codezeilen aus, und löschen Sie sie.
Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); Console.WriteLine(openingPosition); Console.WriteLine(closingPosition);Wählen Sie im Visual Studio Code-Menü Datei die Option Speichern aus.
Die Datei „Program.cs“ muss vor dem Erstellen oder Ausführen des Codes gespeichert werden.
Klicken Sie im Panel „Explorer“ mit der rechten Maustaste auf TestProject, und klicken Sie dann auf In integriertem Terminal öffnen, um ein Terminal am Speicherort des TestProject-Ordners zu öffnen.
Es sollte sich ein Terminalbereich mit einer Eingabeaufforderung öffnen, die anzeigt, dass das Terminal für den Speicherort Ihres TestProject-Ordners geöffnet ist.
Geben Sie an der Eingabeaufforderung des Terminals dotnet run ein, um Ihren Code auszuführen, und drücken Sie dann die EINGABETASTE.
Hinweis
Wenn die Meldung „Es wurde kein ausführbares Projekt gefunden“ angezeigt wird, stellen Sie sicher, dass in der Eingabeaufforderung des Terminals der erwartete Speicherort des Ordners „TestProject“ angezeigt wird. Beispiel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Die folgende Ausgabe sollte angezeigt werden:
13 36In diesem Fall ist der Index des
(Zeichens 13. Denken Sie daran, dass diese Werte nullbasiert sind, sodass es das 14. Zeichen in der Zeichenfolge ist. Der Index des)Zeichens lautet36.Nachdem Sie nun über die beiden Indizes verfügen, können Sie sie als Begrenzungen verwenden, um den Wert zwischen ihnen abzurufen.
Hinzufügen von Code zum Abrufen des Werts zwischen Klammern
Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); // Console.WriteLine(openingPosition); // Console.WriteLine(closingPosition); int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus. Die folgende Ausgabe sollte angezeigt werden:
(inside the parenthesesDie
Substring()Methode benötigt die Startposition und die Anzahl von Zeichen oder Länge, um abzurufen. Sie berechnen also die Länge in einer temporären Variablen namenslength, und übergeben sie mit demopeningPositionWert, um die Zeichenfolge innerhalb der Klammer abzurufen.Das Ergebnis passt nahezu, aber die Ausgabe beinhaltet die öffnende Klammer. In dieser Übung ist die Einbeziehung der Klammer nicht erwünscht. Um die Klammer aus der Ausgabe zu entfernen, müssen Sie den Code aktualisieren, um den Index der Klammer selbst zu überspringen.
Ändern der Anfangsposition der Teilzeichenfolge
Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); openingPosition += 1; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus. Die folgende Ausgabe sollte angezeigt werden:
inside the parenthesesNehmen Sie sich einen Moment Zeit, um den vorherigen Code und die Zeile
openingPosition += 1;zu überprüfen.Wenn Sie den
openingPositionum1erhöhen, überspringen Sie das öffnende Klammerzeichen.Der Grund, warum Sie den Wert
1verwenden, liegt daran, dass dies die Länge des Zeichens ist. Wenn Sie versuchen, einen Wert zu finden, der nach einer längeren Zeichenfolge beginnt,<div>oder---verwenden Sie stattdessen die Länge dieser Zeichenfolge.Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:
string message = "What is the value <span>between the tags</span>?"; int openingPosition = message.IndexOf("<span>"); int closingPosition = message.IndexOf("</span>"); openingPosition += 6; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Nehmen Sie sich einen Moment Zeit, um den vorherigen Code und die Zeile
openingPosition += 6;zu überprüfen.Der vorangehende Codeausschnitt zeigt, wie Sie den Wert innerhalb eines öffnenden und schließenden
<span>Tags finden.In diesem Fall fügen Sie
6zuopeningPositionals Offset hinzu, um die Länge der Teilzeichenfolge zu berechnen.
Vermeiden von Magischen Werten
Hartcodierte Zeichenfolgen wie "<span>" in der vorherigen Codeauflistung werden als "magische Zeichenfolgen" und hartcodierte numerische Werte 6 wie "magische Zahlen" bezeichnet. Diese "Magic"-Werte sind aus vielen Gründen nicht erwünscht, und Sie sollten versuchen, sie nach Möglichkeit zu vermeiden.
Überprüfen Sie den vorherigen Code unter dem Aspekt, dass er unter Umständen nicht funktioniert, wenn Sie die Zeichenfolge
"<span>"mehrmals im Code hartcodiert haben, aber eine Instanz davon fälschlicherweise als"<sapn>"eingegeben haben.Der Compiler fängt
"<sapn>"zur Kompilierungszeit nicht ab, da sich der Wert in einer Zeichenfolge befindet. Der Rechtschreibfehler führt bei der Ausführung zu Problemen, und je nach Komplexität Ihres Codes kann es schwierig sein, diese zu beheben.Wenn Sie die Zeichenfolge
"<span>"in den kürzeren"<div>"ändern, aber vergessen Sie, die Zahl6in5zu ändern, dann erzeugt Ihr Code unerwünschte Ergebnisse.Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:
string message = "What is the value <span>between the tags</span>?"; const string openSpan = "<span>"; const string closeSpan = "</span>"; int openingPosition = message.IndexOf(openSpan); int closingPosition = message.IndexOf(closeSpan); openingPosition += openSpan.Length; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Nehmen Sie sich eine Minute Zeit, um den aktualisierten Code und die Verwendung des Schlüsselworts
constzu untersuchen, wie inconst string openSpan = "<span>";.Der Code verwendet eine Konstante mit dem
constSchlüsselwort. Mit einer Konstante können Sie eine Variable definieren und initialisieren, deren Wert nie geändert werden kann. Sie würden diese Konstante dann im restlichen Code verwenden, wenn Sie diesen Wert benötigen. Dadurch wird sichergestellt, dass der Wert nur einmal definiert ist und Fehler in der Schreibweise derconst-Variable vom Compiler erkannt werden.Die vorherige Codeauflistung ist eine sicherere Methode zum Schreiben desselben Codes, den Sie im vorherigen Abschnitt untersucht haben. Ändert sich der Wert von
openSpanzu<div>, bleibt die Codezeile, die dieLength-Eigenschaft verwendet, weiterhin gültig.
Rekapitulation
In dieser Lerneinheit wurden viele Themen behandelt. Dies sind die wichtigsten Punkte, die Sie sich merken sollten:
-
IndexOf()gibt Ihnen die erste Position eines Zeichens oder einer Zeichenfolge innerhalb einer anderen Zeichenfolge. -
IndexOf()gibt zurück-1, wenn keine Übereinstimmung gefunden werden kann. -
Substring()gibt nur den angegebenen Teil einer Zeichenfolge zurück, wobei eine Anfangsposition und optionale Länge verwendet werden. - Es gibt oft mehr als eine Möglichkeit, ein Problem zu lösen. Sie haben zwei separate Techniken verwendet, um alle Instanzen eines bestimmten Zeichens oder einer bestimmten Zeichenfolge zu finden.
- Vermeiden Sie hartcodierte Zauberwerte. Definieren Sie stattdessen eine
constVariable. Der Wert einer Konstantenvariable kann nach der Initialisierung nicht geändert werden.
Überprüfen Sie Ihr Wissen
Feedback
War diese Seite hilfreich?
No
Benötigen Sie Hilfe zu diesem Thema?
Möchten Sie versuchen, Ask Learn zu verwenden, um Sie durch dieses Thema zu klären oder zu leiten?