Eng:Moving Part of a String

With Scratch's limited string manipulation capabilities, moving part of a string to a different position within that same string requires a workaround. A custom block set to "run without screen refresh" can be used to rapidly move a substring to another location in its base string.

Programming
The following custom block will move the specified sub of a base string to a different position (index) within the body (base) string.

define move character (start) through (last) of (base) to position (pos) set [i v] to (start) set [group1 v] to [] repeat (((last) - (start)) + (1)) set [group1 v] to (join (group1) (letter (i) of (base))) change [i v] by (1) end set [group2 v] to [] set [i v] to [1] repeat ((start) - (1)) set [group2 v] to (join (group2) (letter (i) of (base))) change [i v] by (1) end set [i v] to ((last) + (1)) repeat ((length of (base)) - (last)) set [group2 v] to (join (group2) (letter (i) of (base))) change [i v] by (1) end set [compiled v] to [] //will result in the finished string set [i v] to [1] repeat ((pos) - (1)) set [compiled v] to (join (compiled) (letter (i) of (group2))) change [i v] by (1) end set [compiled v] to (join (compiled) (group1)) //inserts the moved substring to the proper position set [i v] to (pos) repeat (((length of (base)) - (pos)) + (1)) set [compiled v] to (join (compiled) (letter (i) of (group2)))

Explanation
The very first section of the base string that must be grouped unto an independent variable, called, is the substring of the body string that is to be removed. Afterwards, the substring is actually removed from the string, and the remaining characters are grouped into a variable called. To finish the movement, the variable "compiled" results with the finished strings joined together in the proper sequential order.