2014-07-07 5 views
0

hy J'essaie d'utiliser gsub pour supprimer ce caractère 'être carful c'est pas' ou 'il vient de Word (microsoft) je pense. je ne comprends vraiment pourquoi je ne peux pas supprimer ce personnage parce que je peux supprimer tous les autresgsub un caractère spécial

quand j'utilise gsub comme ça:

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

je reçois cette erreur ci-dessous

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

      ^
+0

Quelle version de Ruby vous utilisez ? – matt

Répondre

0

Quand je courais votre RegEx à travers le site de Rubular, j'ai compris;

enter image description here

Je pensais que c'était une question UTF-8 et après un débordement de pile supplémentaire, il semble assez commun dans une application de rails pour ajouter # encoding: utf-8 en haut de votre fichier.

+0

j'essaie que syno = info.text.force_encoding ("utf8") p = syno.gsub (motif) {| match | ""} – user2912390

+0

pour l'information j'essaye d'analyser le site Web – user2912390

0

Vous pouvez ajouter ce qui suit à votre regex:

/\u2018|\u2019|\u201A/ 

qui sont des guillemets simples bouclés: ["‘", "’", "‚"].

Si vous êtes intéressé, voici une méthode simple que je l'ai utilisé avant de nettoyer le texte Word (reconstitué à partir d'un certain nombre de ressources en ligne):

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

cela fonctionne merci beaucoup de m'avoir aidé – user2912390