2013-05-07 11 views
6

I miei utenti a volte immettono, anziché l'apostrofo ('), simboli simili a apostrofi (), che causano alcuni problemi con il database.Sostituisci virgolette singole con apostrofo in stringa (Ruby)

ho cercato di sostituirli con gsub in questo modo:

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

Nessuna di queste opzioni funzionano - ottenere l'errore:

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

Sono riservati da Ruby? Come posso sostituirli?

+2

quale versione di rubino fare stai usando? – Mattherick

+0

1.9.2 - perché Heroku lo utilizza –

+0

result = "'helle'" result.gsub (/ \ '/, "'") .gsub ("'", "'") charby multibyte non valido (UTF-8) Errore di sintassi , fine $ imprevisto, in attesa di ')'. deve essere un problema di codifica. – Mattherick

risposta

6

Se il vostro editor di testo non supporta caratteri UTF-8 come direttamente, si può sfuggire loro in questo modo:

"\u2018" 

Quindi nel tuo esempio, sarebbe:

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

Se si desidera ottenere stringhe di virgolette sinistra e destra è necessario farlo myString.gsub (/ [\ u2018 \ u2019] /, "'"). Recentemente ha dovuto farlo con un'esportazione XML di Windows per un'app Rails. –

+0

da dove hai ottenuto la mappatura per ''è' "\ u2018" '? Ho bisogno dello stesso per "" "... Per favore aiuto. –

+0

Puoi trovare il punto di codice Unicode di 'ô' esaminando una [tabella Unicode] (http://unicode-table.com/en/search/?q=ô) che ti dirà che è' U + 00F4'. In Ruby, significa che devi scrivere '" \ u00F4 "'. – kiplantt

1

Prova:

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

Dovrebbe funzionare.

+0

Questo effettivamente genera l'errore –

0

Oltre a ciò che ha detto @kiplantt, funziona anche (appena testato)

puts result.gsub(/(\`)/, "\\'") 
Problemi correlati