2009年6月27日土曜日

[Ruby]シングルクォートをエスケープ

Rubyで正規表現を使ってシングルクォートをエスケープしようとした。

------------------------------
str = "I'm lovin' it"

str.gsub!(/'/, "\\'")

puts str
------------------------------

そしたらなぜかこうなった
(実行結果)
^^^^^^^^^^^^^^^^^^^^^
Im lovin' itm lovin it it
^^^^^^^^^^^^^^^^^^^^^


なぜだ・・・。意味が分からなすぎる。

いろいろ調べたけどどうしてそうなるのか分からなかった(笑)

で、結局違うやり方で

--------------------------------
str = "I'm lovin' it"

str.gsub!(/'/) do |m|
'\\' + m
end

puts str
--------------------------------

こうやったら

^^^^^^^^^^^^^^^^^^^^^^^
I\'m lovin\' it
^^^^^^^^^^^^^^^^^^^^^^^

ちゃんとできた。これで出来るならまぁいいか(妥協)




ちなみになぜシングルクォートをエスケープしたいかというと

RubyからMySQLにデータを入れるときにテキストでシングルクォートを入れたいから。

0 件のコメント:

コメントを投稿