Java?
Implementieren Sie die Methode String replace(String source, String search, String replace), die alle (exakten) Vorkommen von search in source mit replace ersetzt. Verwenden Sie hierbei nur die Methoden int indexOf(String), String substring(int, int), int length() und int indexOf(String str, int pos) aus der String-Klasse. Die Verwendung von anderen in Java gebotenen Methoden ist nicht gestattet.
Kann mir bitte jemand helfen?
1 Antwort
Als erstes musst du danach suchen, ob es überhaupt den String gibt und dann eben auch die Position.
Als erstes würde ich ein normales indexOf mit dem ersten Zeichen aus search laufen lassen. Falls es nicht gefunden wird, kannst direkt abbrechen.
Danach kannst du ein Substring vom Source String mit der Startposition von der Suche und der länge vom Search String bilden. Das Ergebnis könntest einfach mit der Suche vergleichen.
Falls der gebildete Substring nicht identisch ist, führst du ein weiteres indexOf aus, welches die Startposition nach dem ersten Fund definiert und bildest anschließend wieder ein Substring.
Wenn du den Abschnitt gefunden hast, kannst du ein Substring vom ersten Teil des Source Strings bis zur gefundenen Suchen bilden. Gleiches für den Teil nach der Suche.
Im Anschluss kannst du die drei einzelnen Strings zusammenführen. Ich hoffe die Addition von Strings darf benutzt werden.
Es ist jetzt kein Source Code, aber mit noch ein paar Schleifen und If's solltest du es selber hinbekommen.
Denke dir Beispiele mit Ergebnissen aus und überprüfe nach dem Ausführen, ob das Ergebnis eingetreten ist.
Es sollte Fälle wie nicht gefunden, doppelt Enthalten, ein Buchstabe groß statt klein und auch Fälle die Erfolgreich sind dabei sein.
Wenn du möchtest, könntest du auch ein Framework für Unittests benutzen.
Ich kenne nicht die exakte Bedienung von JUnit, aber so im etwa sollte ein Test aussehen.
@Test
void successfulTest() {
String result = replace("IchBinEinTestString", "Ein", "Der");
AssertEquals(result, "IchBinDerTestString");
}
Bei einem weiteren Test würde du als Suche z.B. "ein", wählen und dort würdest du eine Exception bzw. den Original String erwaten (Assert).
Den Methoden/Test Namen sollte du an dem Ziel vom Test anpassen.
Danke! Hast du auch eine Idee, wie ich das testen kann?