2014-07-07 42 views
0

hy 我尝试使用gsub删除这个字符'是真的不是'或'他来自Word(微软)我想。 我真的不明白,为什么我不能删除这个角色,因为我可以删除所有其他gsub一个特殊的字符

当我使用GSUB这样的:

pattern = /(\’|\"|\.|\*|\/|\-|\\|\)|\$|\+|\(|\^|\?|\!|\~|\`)/ 
restring = string.gsub(pattern){|match|" " } 

我得到以下

syntax error, unexpected $end, expecting keyword_end 
    pattern = /(\’|\"|\.|\*|\/|\-|\\|\)|\$|\+|\(|\^|\?|\!|\~|\`)/ 

      ^
+0

什么版本的Ruby您使用的是? – matt

回答

0

当我跑了这个错误您的RegEx通过Rubular的网站,我得到了这个;

enter image description here

我想这是一个UTF-8的问题和一些额外的堆栈溢出后,似乎很常见的Rails应用程序添加# encoding: utf-8到文件的顶部。

+0

我试着说syno = info.text.force_encoding(“utf8”)p = syno.gsub(pattern){| match |“”}} – user2912390

+0

我试图解析网站 – user2912390

0

您可以添加以下到你的正则表达式:

/\u2018|\u2019|\u201A/ 

其中一些卷曲单引号:["‘", "’", "‚"]

如果你有兴趣,这里是一个简单的方法(从网上的一些资源拼凑起来的)我之前用于清理的Word文本:

def replace(text) 
    text. 
    gsub(/[\u2018|\u2019|\u201A]/, "\'"). 
    gsub(/[\u201C|\u201D|\u201E]/, "\""). 
    gsub(/\u2026/, "..."). 
    gsub(/[\u2013|\u2014]/, "-"). 
    gsub(/\u02C6/, "^"). 
    gsub(/\u2039/, "<"). 
    gsub(/\u203A/, ">"). 
    gsub(/[\u02DC|\u00A0]/, " ") 
end 
+0

这是工作非常感谢你帮助我 – user2912390