[plt-scheme] problem with \"
At Tue, 13 Dec 2005 15:10:33 +0000, "Alexandre Hubert" wrote:
> Here is my problem : I have a list, for instance (x y \"z\") , in which the
> double-quotes are preceded by a backslash, and I want to format it to obtain
> the list (x y "z") (e.g. without the backslashes). The only way I found to
> do it is to write the list into an external file with fprintf "~a", then
> read the file to get the list without the backslashes, and I would like to
> do it without having to write in an external file. I tried format "~a", I
> tried display and fprintf "~a" into a open-output-string, and none of these
> worked, the backslashes remain (and I am surprised by the behavior of
> fprintf "~a", as if the port is open on an external file, the backslashes
> are removed, while if it is open on a string, they are not. Shouldn't
> fprintf write the same thing whatever the port is open on ?)
Yes, `fprintf' behaves the same for all ports. I think there must be
some confusion at a different point.
If you evaluate
(format "~s" '(x y "z"))
then the result prints as
"(x y \"z\")"
but the backslashes are not really characters in this string. They are
just escaping the quotes for the enclosing string. You can see that by
evaluating
(display (format "~s" '(x y "z")))
which prints
(x y "z")
to the current output port and returns void.
Your actual example probably doesn't match the above, but I can't quite
tell what you need. If you can show example code, then we can probably
help more.
Matthew