ref: ce10ff586027ea9dcac0f074b16a23f9888cc6df
dir: /lib/std/strreplace.myr/
use "alloc"
use "die"
use "slcp"
use "strfind"
use "sljoin"
use "types"
use "option"
pkg std =
const strreplace : (haystack : byte[:], needle : byte[:], repl : byte[:] -> byte[:])
;;
const strreplace = {haystack, needle, repl
var ret
iassert(needle.len > 0, "missing needle")
ret = ""
while true
match std.strfind(haystack, needle)
| `None: break
| `Some idx:
std.sljoin(&ret, haystack[:idx])
std.sljoin(&ret, repl)
haystack = haystack[idx + needle.len:]
;;
;;
std.sljoin(&ret, haystack)
-> ret
}