2012-02-15 72 views
6

我正在为String类编写一个扩展方法来清理非ASCII字符。我正在清理的字符串是UTF-8。如何使用UTF-8字符串的引号来编写gsub?

在文件中使用非ASCII字符时,控制台将无法启动,因为它将卷曲引号解释为普通引号。

如何逃避gsub中的引号?

如何编写一个使用unicode进行卷曲引号(例如U + 201C)的gsub。

使用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,'''') – 2012-02-16 01:29:58

+0

@BSeven:1.9.2和1.9.3给我一个“超出字符范围”的错误,应该和s.gsub(“\ u201c”,' “')'。 – 2012-02-16 03:26:10

+0

@BSeven:我需要使用'8220.chr(Encoding :: UTF_8)'来让'chr'表现得合理。 – 2012-02-16 03:35:25