2013-05-07 169 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(/(\`)/, "\\'")