[REBOL] Re: Newbie Q: Search and delete from a Block
From: rotenca:telvia:it at: 10-Oct-2002 1:24
Hi Gabriele,
> RPT> if all [any-string? target any [not any-string? :search tag?
:search]]
> RPT> [search: form :search]
>
> Does this work? You have 'ALL as a local word...
Does not work. I forgot system/words/, i try also to remove the if (but i'm
not sure that the efinal evaluation of the search value does not make fail the
block of all in some cases)
system/words/all [any-string? target any [not any-string? :search tag?
:search] search: form :search]
> BTW, for a long string copying to a new string will probably be
> faster than changing the original (unless you're not moving data
> around at all, i.e. when SEARCH has the same length as
> REPLACE...).
I fear that memory can become a problem with very long series! and additional
test on the lenghts could slow the function, i think.
----- new version ----
replace: func [
{Replaces the search value with the replace value within the target
series. Changed by ana}
target [series!] "Series that is being modified."
search "Value to be replaced."
replace "Value to replace with."
/all "Replace all occurrences."
/case "Case-sensitive replacement."
/local start end rule
][
rule: [to search start: search end: opt (end: change/part start replace
end) :end]
system/words/all [any-string? target any [not any-string? :search tag?
:search] search: form :search]
if all [rule: reduce ['some rule]]
either case [parse/all/case target rule][parse/all target rule]
target
]
---
Ciao
Romano