Non-destructive replace?

Started by cormullion, January 10, 2006, 06:34:43 AM

Previous topic - Next topic

cormullion

How do I a non-destructive replace? I've realised that my problem is:



(set 'new-filename (replace "." old-file-name "copy."))



- I've destroyed the old-file-name...



It seems wrong to make a safe copy beforehand.

Lutz

#1
Just wrap the old filename with anything which returns the filename:



> (set 'old "myfile.txt")
"myfile.txt"
> (replace "." (string old) ".copy.")
"myfile.copy.txt"
> old
"myfile.txt"
>


even 'if', 'or', 'and' or 'begin' would work, but 'string' is more descriptive. Or using implicit 'slice'



(replace "." (0 old) ".copy.")




Lutz

cormullion

#2
Quote(replace "." (string old) ".copy.")


That's clever - thanks!

Fanda

#3
Instead of a (string old) you could also use:


(set 'old)  or  (setq old)


Fanda