Rebol 编程/替换
外观
< Rebol 编程
REPLACE target search replace /all /case /tail
在目标序列中用替换值替换搜索值。
REPLACE 是一个函数值。
- 目标 -- 被修改的序列(类型:序列)
- 搜索 -- 要替换的值(类型:任何)
- 替换 -- 用它替换的值(如果是一个函数,每次都会被调用)(类型:任何)
- /all -- 替换所有出现
- /case -- 区分大小写的替换
- /tail -- 返回最后一个替换位置后的目标
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 (will be called each time if a function)}
/all "Replace all occurrences"
/case "Case-sensitive replacement"
/tail "Return target after the last replacement position"
/local save-target len value pos do-break
][
save-target: target
len: system/words/case [
bitset? :search 1
any-string? target [
if any [not any-string? :search tag? :search] [search: form :search]
length? :search
]
any-block? :search [length? :search]
true 1
]
do-break: unless all [:break]
while pick [
[pos: find target :search]
[pos: find/case target :search]
] not case [
(value: replace pos)
target: change/part pos :value len
do-break
]
either tail [target] [save-target]
]