Aus Das deutschsprachige Scratch-Wiki
Dieses Tutorial zeigt, wie man ein Skript schreibt, das jedes Vorkommen eines bestimmten Strings in einem String findet und durch einen anderen String ersetzt. Ein solches Skript wird oft benötigt, weil es in Scratch keinen Block für diese Aufgabe gibt.
Programmierung
Das Skript sollte drei Vorgaben erhalten: der String, der verabeitet werden soll, ein String, der ersetzt werden soll und einen String, durch den er ersetzt werden soll. Es sollte die verarbeitete Zeichenkette in eine (Ergebnis)
Variable ausgeben.
Scratch bietet keine Methode zum Auffinden von Substrings, daher muss das Skript eine Schleife über jedes Zeichen in der Zeichenkette ziehen und prüfen, ob das aktuelle Zeichen am Anfang des zu ersetzenden Substrings steht. Ist dies der Fall, wird zum Ende der Substring gesprungen und die Ersatzzeichenkette zur Ausgabe hinzugefügt. Ist dies nicht der Fall, wird einfach das aktuelle Zeichen an die Ausgabe angehängt.
Um festzustellen, ob das aktuelle Zeichen am Anfang der Substring steht, wird selbst ein Teil der Zeichenkette in einer Schleife durchlaufen.
Definiere Ersetze (substring) durch (ersetzung) in (string) setze [ergebnis v] auf () setze [index v] auf (1) // Zähler wiederhole (Länge von (string)) mal setze [index2 v] auf (0) // ein weiterer Zähler wiederhole bis <<(index2) = (Länge von (substring))> oder <nicht <(Zeichen ((index) + (index2)) von (string)) = (Zeichen ((index2) + (1)) von (substring))>>> ändere [index2 v] um (1) end falls <(index2) = (Länge von (substring))> , dann ändere [index v] um (Länge von (substring)) // überspringe ersetzte Zeichenfolge setze [ergebnis v] auf (verbinde (ergebnis) und (ersetzung)) sonst setze [ergebnis v] auf (verbinde (ergebnis) und (Zeichen (index) von (string))) ändere [index v] um (1) end end
Demo
Ersetzen einer Teilzeichenkette in einer Zeichenkette
Schau' dir dieses Projekt auf der Scratch-Webseite an...
[wiki=de:Ersetzen einer Teilzeichenkette in einer Zeichenkette]Ersetzen einer Teilzeichenkette in einer Zeichenkette[/wiki]