Hi All,
Heres an updated version of 'replace from Bo, that fixes an issue with
'replace and tags. (where the correct length of the tag was not taken into
account during a replace), that I sent in as a feedback issue.
I have been testing it and seems to be working properly. If you find any
problems please let [EMAIL PROTECTED] know.
If there is no problem then this updated version should (hopefully) end up
in the next core release. This updated 'replace also has a case refinement
An example of the problem that was identified in the current rebol/core
'replace
>> replace "This is a string with a <tag> in it" <tag> <tag2>
== "This is a string with a <tag2>g> in it"
or
>> replace "This is a string with a <tag> in it" <tag> ""
== "This is a string with a g> in it"
Cheers,
Allen K
REBOL [
Title: "Case-sensitive REPLACE function"
Date: 14-Mar-2000
Author: "Bohdan Lechnowsky"
Email: [EMAIL PROTECTED]
File: %replace.r
Purpose: {
Adds the ability to do a case-sensitive REPLACE in a
string or a block.
Also fixes IRNumber 941.
}
]
replace: func [
{Replaces the search value with the replace value within the target series.}
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 save-target len
][
save-target: target
if (any-string? target) and ((not any-string? :search) or (tag? :search)) [search:
form :search]
len: either any [any-string? target any-block? :search] [length? :search] [1]
while [target: either case [find/case target :search][find target :search]] [
target: change/part target :replace len
if not all [break]
]
save-target
]