[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[kagemai-users:0039] Re: kagemai-0.8.0 release
>>>>> In [kagemai-users : No.0038]
>>>>> HOSONO Hidetomo <h12o@xxxxxxxx> wrote:
> (対策) Project.save_config()で、保存される文字列に対して
> gsub("'","\\'")メソッドを適用 > project.rb_gsub.patch
"\\\\'" でしょうか。
t = "a'b"
puts t # 表示: a'b
puts t.gsub("'","\\'") # 表示: abb
puts t.gsub("'","\\\\'") # 表示: a\'b
ただ、文字列中に \' があるとどちらにしてもまずいように思います。
最近のruby-list(ruby-devだったかも)でも話題になっていましたが
String#dumpを使うというのはどうでしょうか。
t = "a\\'b"
puts "ORIG: " + t
def test(str)
puts "INPUT: " + str
begin
eval(str)
puts "OK: #{str}"
rescue SyntaxError
puts "ERROR: #{str}"
end
end
test "'" + t.gsub("'","\\'") + "'"
test "'" + t.gsub("'","\\\\'") + "'"
test t.dump
を実行すると
ORIG: a\'b
INPUT: 'a\bb'
OK: 'a\bb'
INPUT: 'a\\'b'
ERROR: 'a\\'b'
INPUT: "a\\'b"
OK: "a\\'b"
となります。
--
やまだあきら / akira yamada <http://arika.org/>
(akira@xxxxxxxxx, akira@xxxxxxxxxxxxx or akira@xxxxxxxxxxx)