2013-05-07 130 views
6

我的用户有时会输入看起来像撇号()的符号,而不是撇号('),这会导致数据库出现问题。用字符串替换单引号(Ruby)

我试着用gsub来替代它们像这样:

result.gsub(/\‘/, "'") 
result.gsub(/‘/, "'") 

这两种方法都不工作 - 收到错误:

syntax error, unexpected $end, expecting ')' 
    return result.gsub(/\‘/, "'").gsub("’", "'") 
         ^

它们是否由红宝石保留?我如何替换它们?

+2

哪个ruby版本做y ou使用? – Mattherick 2013-05-07 13:08:40

+0

1.9.2 - 因为Heroku使用它 – 2013-05-07 13:14:40

+0

result =“'helle'” result.gsub(/'',''“).gsub(”'“,”'“) 无效的多字节字符(UTF-8 ) 语法错误,意外的$结束,期待')'。它必须是一个编码问题。 – Mattherick 2013-05-07 13:18:03

回答

6

如果您的文本编辑器不支持像 UTF-8字符直接,你可以逃脱他们这样说:

"\u2018" 
在你的榜样

所以,这将是:

result.gsub(/\u2018/, "'") 
+2

如果你想得到左右引号字符串,你必须这样做,而不是myString.gsub(/ [\ u2018 \ u2019] /,“'”)。最近不得不使用Rails应用程序的Windows XML导出来完成此操作。 – 2013-12-13 09:08:49

+0

从哪里得到'''的映射是'“\ u2018”'?我需要''ô''相同的..请帮助。 – 2014-01-30 18:26:01

+0

您可以通过查看[Unicode表](http://unicode-table.com/en/search/?q=ô)来找到'ô'的Unicode代码点,它会告诉您它是'U + 00F4'。在Ruby中,这意味着你必须编写'“\ u00F4”'。 – kiplantt 2014-02-01 15:31:50

1

尝试:

result.gsub("‘", "'") 

它应该工作。

+0

这实际上会引发错误 – 2013-05-07 13:27:55

0

除了@kiplantt所说的,以下内容也适用(刚测试过)

puts result.gsub(/(\`)/, "\\'") 
相关问题