[REBOL] Re: Parse refactoring puzzle
From: antonr::iinet::net::au at: 31-Jul-2003 16:14
This version modifies the string in place
(in case you have a very long string):
clear-place-holders: func [str [string!] /local start ] [
probe parse/all str [
any [
;(print "----")
to "!!" start: ; move to first mark, set start to current index
;(prin index? start ?? start)
2 skip thru "!!" ; skip a character 2 times, move index beyond next mark
finish: ; set finish to current index
;(prin index? finish ?? finish)
:start ; set index back to start
(remove/part start finish) ; remove text from start to finish
]
to end
]
str
]
; test
foreach [example goal][
{hello !!name!! anton, your phone is !!phone!! 123456}
{hello anton, your phone is 123456}
{head!!abcd!efgh!!tail}
{headabcd!efghtail}
{head! !abcd!efgh!!tail}
{head! !abcd!efgh!!tail}
][
print ["---^/" example]
print clear-place-holders copy example
]
Anton.