2012-02-15 1 views
6

Я пишу метод расширения класса String для очистки символов, отличных от ASCII. Струны, которые я чищу, - UTF-8.Как написать gsub с фигурными цитатами для строк UTF-8?

При использовании символов не ASCII в файле консоль не запускается, поскольку она интерпретирует фигурные кавычки как обычные кавычки.

Как избежать фигурной цитаты в gsub?

Как написать gsub, который использует unicode для фигурных кавычек (например, U + 201C).

Работает в Rails 3.07 и Ruby 1.9.2.

ответ

14

Вы можете использовать те же самые \u побегов в регулярных выражениях, которые вы используете в двойных кавычках:

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

Например:

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

Я нашел следующие работы: 's.gsub (8220.chr, '' ') ' –

+0

@BSeven: Это дает мне ошибку« вне диапазона диапазона »в 1.9.2 и 1.9.3. Это должно быть таким же, как' s.gsub («\ u201c», «')'. –

+0

@BSeven: Мне нужно использовать '8220.chr (Encoding :: UTF_8)', чтобы заставить 'chr' вести себя разумно. –