Re: string.format(%q) and escape sequences
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: string.format(%q) and escape sequences
- From: Philipp Janda <siffiejoe@...>
- Date: 2013年8月13日 19:56:07 +0200
Am 13.08.2013 20:23 schröbte Bernd Eggink:
The documentation says, "the q option formats a string between double
quotes, using escape sequences when necessary to ensure that it can
safely be read back by the Lua interpreter".
However, this is not true if the string contains certain escape
sequences, such as 027円 or 013円:
t="027円[1maha027円[m"
t1=string.format("%q", t) --> "27円[1maha27円[m"
On an xterm in Linux print(t) prints a nice bold aha, while print(t1)
prints "27円[1maha27円[m". Is that a bug or am I missing something?
Yes, you are missing the "can safely be read back by the Lua
interpreter". You are not reading t1 back. Try this instead:
t = "027円[1maha027円[m"
print( t )
file = assert( io.open( "f.lua", "w" ) )
-- %q already includes double quotes at both ends ...:
file:write( "print(", string.format( "%q", t ), ")\n" )
file:close()
dofile( "f.lua" ) -- do the reading back ...
So, the %q format specifier is for generating valid Lua string literals
that can be pasted into a Lua program ...
Bernd
Philipp