2012-02-15 10 views
6

Sto scrivendo un metodo di estensione per la classe String per pulire caratteri non ASCII. Le stringhe che sto pulendo sono UTF-8.Come scrivere gsub con le virgolette inglesi per le stringhe UTF-8?

Quando si utilizzano caratteri non ASCII in un file, la console non verrà avviata poiché interpreta le virgolette ricurve come virgolette regolari.

Come evitare la citazione con ricci in gsub?

Come scrivere un gsub che utilizza l'unicode per le virgolette ricurve (U + 201C, ad esempio).

Utilizzo in Rails 3.07 e Ruby 1.9.2.

risposta

14

È possibile utilizzare le stesse \u fughe in espressioni regolari che usereste in doppia stringhe tra virgolette:

s.gsub(/[\u201c\u201d]/, '"') 

Ad esempio:

>> s = "\u201Cpancakes\u201d" 
=> "“pancakes”" 
>> puts s.gsub(/[\u201c\u201d]/, '"') 
"pancakes" 
+0

ho trovato i seguenti lavori: 's.gsub (8220.chr, '"')' –

+0

@BSeven: questo mi dà un errore "fuori intervallo di caratteri" in 1.9.2 e 1.9.3, che dovrebbe essere lo stesso di 's.gsub (" \ u201c ", ' "')'. –

+0

@BSeven: Ho bisogno di usare '8220.chr (Encoding :: UTF_8)' per fare in modo che 'chr' si comporti in modo ragionevole. –

Problemi correlati