代码之家  ›  专栏  ›  技术社区  ›  Glenjamin

如何在ruby中转义数据库通配符?

  •  0
  • Glenjamin  · 技术社区  · 14 年前

    我正在尝试使用字符串#gsub在%or前面添加斜杠?,然后我将在LIKE查询中使用它。我有一些奇怪的行为,希望有人能解释:

    irb(main):018:0> "%?".gsub(/([%\?])/, '\1')
    => "%?"
    irb(main):019:0> "%?".gsub(/([%\?])/, '\\1')
    => "%?"
    irb(main):020:0> "%?".gsub(/([%\?])/, '\\\1')
    => "\\1\\1"
    irb(main):021:0> "%?".gsub(/([%\?])/, '\\\\1')
    => "\\1\\1"
    

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    >> '%?'.gsub(/([%\?])/, '\\\\\1')
    => "\\%\\?"
    

    Single-quoted strings in Ruby 不接受转义字符,所以 '\1' '\\1' 解析方式与 '\\\1' '\\\\1' . 你想给gsub传递一个 \\\1