2012-02-15 13 views
6

Estoy escribiendo un método de extensión para la clase String para limpiar caracteres que no sean ASCII. Las cadenas que estoy limpiando son UTF-8.Cómo escribir gsub con comillas para cadenas UTF-8?

Al usar caracteres que no sean ASCII en un archivo, la consola no se iniciará porque está interpretando las comillas como comillas regulares.

¿Cómo escapar de la cita rizada en gsub?

Cómo escribir un gsub que utiliza el unicode para comillas tipográficas (U + 201C, por ejemplo).

Trabajando en Rails 3.07 y Ruby 1.9.2.

Respuesta

14

Se pueden utilizar los mismos \u escapa en expresiones regulares que tendrá que utilizar en cadenas entre comillas dobles:

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

Por ejemplo:

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

me encontré con las siguientes obras: 's.gsub (8220.chr, '"')' –

+0

@BSeven: Eso me da un error de "rango fuera de rango" en 1.9.2 y 1.9.3. Eso debería ser lo mismo que 's.gsub (" \ u201c ", ' "')'. –

+0

@BSeven: Necesito usar '8220.chr (Codificación :: UTF_8)' para hacer que 'chr' se comporte con sensatez. –