2013-05-07 4 views
6

アポストロフィ(')の代わりに、アポストロフィ()のように見える記号を入力すると、データベースに問題が発生することがあります。アポストロフィを文字列(Ruby)で置換する

そうように私はgsubでそれらを交換しようとした:

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

どちらも、これらのオプションのが仕事 - エラーを取得:

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

彼らは、Rubyによって予約されていますか?どのように交換するのですか?

+2

これはルビーバージョンです使う? – Mattherick

+0

1.9.2 - Herokuがこれを使用するため、 –

+0

result = "'helle'" result.gsub(/ \ '/、 "'").gsub( "'"、 "'") 無効なマルチバイト文字(UTF-8 ) 構文エラー、予期しない$ end、expecting ')'。エンコーディングの問題でなければなりません。 – Mattherick

答えて

6

テキストエディタで直接のようなUTF-8文字をサポートしていない場合、あなたは彼らにこの方法を逃れることができます。

"\u2018" 

だからあなたの例では、それは次のようになります。

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

をスローします。左と右の引用文字列を取得したい場合は、myString.gsub(/ [\ u2018 \ /]、 "最近、Railsアプリケーション用のWindows XMLエクスポートでこれを行う必要がありました。 –

+0

'' 'のマッピングがどこから得られたかは' "\\2018" 'ですか?私は ''のために同じものが必要です..助けてください。 –

+0

Unicodeコードポイント 'ô'は、[Unicodeテーブル](http://unicode-table.com/en/search/?q=ô)を見ることで見つけることができます。これは' U + 00F4'。 Rubyでは、 '' \ u00F4 "'と書く必要があります。 – kiplantt

1

試してみてください。

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

それが動作するはずです。

+0

これは実際にはエラー –

0

@kiplanttが言ったことに加えて、以下も動作します(ちょうどそれをテストしました)

puts result.gsub(/(\`)/, "\\'") 
関連する問題