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 finde und ersetze (substring :: custom-arg) mit (ersetzung :: custom-arg) in (string :: custom-arg)
setze [ergebnis v] auf ()
setze [index v] auf (1) // Zähler
wiederhole (Länge von (string :: custom-arg)) mal 
  setze [index2 v] auf (0) // ein weiterer Zähler
  setze [ersetze? v] auf [true] // es beginnt mit der Annahme, dass es am Anfang der ersetzten Zeichenfolge steht
  wiederhole (Länge von (substring :: custom-arg)) mal 
    falls <nicht <(Zeichen ((index2) + (index)) von (string :: custom-arg)) = (Zeichen ((index2) + (1)) von (substring :: custom-arg))>> , dann 
      setze [ersetze? v] auf [false]
    end
    ändere [index2 v] um (1)
  end //  es prüft nun, ob die Annahme wahr ist
  falls <(ersetze?) = [true]> , dann 
    ändere [index v] um ((Länge von (substring :: custom-arg)) - (1)) // überspringe ersetzte Zeichenfolge
    setze [ergebnis v] auf (verbinde (ergebnis) und (ersetzung :: custom-arg))
  sonst 
    setze [ergebnis v] auf (verbinde (ergebnis) und (Zeichen (index) von (string :: custom-arg)))
  end
  ändere [index v] um (1)
end

Demo


Das Projekt auf Scratch



Code zum Einbinden ins Forum:
[wiki=de:Ersetzen einer Teilzeichenkette in einer Zeichenkette]Ersetzen einer Teilzeichenkette in einer Zeichenkette[/wiki]
Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.