2012-01-19 2 views
1

Je souhaite remplacer apostrophe (') dans un nom par "backslash apostrophe" (\'). Mais malheureusement, ne pas avoir une chose si simple.comment remplacer une apostrophe en utilisant gsub

Donc irb j'ai essayé suivant

x = x.gsub "de la pile" (/ [\ '] /, "\'")

Certains comment il ne fonctionne pas, je reçois même pile result- est en place de la pile \ 's

Répondre

2

Essayez ceci:

x.gsub(/[']/,"\\\\\'") 

Résultat:

1.9.3p0 :014 > puts x.gsub(/[']/,"\\\\\'") 
anupam\'s 
+0

1.8.7-P357: 008> x.gsub (/ [ '] /, "\\\\'") => "Anupam \\ 's" Je reçois ce :( –

+0

C'est normal - inspect produit une sortie échappée. si vous appelez puts sur la sortie alors vous ne verrez pas le backslash supplémentaire –

+0

merci Cela fonctionne !!! –

3

Essayez ceci:

x = "anupam's"; puts x.gsub("'", "\\\\'") 
+0

Je reçois la sortie comme "Anupam \\ 's" :( –

+0

Je veux vraiment pour mettre cette chaîne dans le script java (pour former une url) ... donc ce travail de chaîne de cette anupam –

+1

comme mentionné dans d'autres commentaires, la sortie (dans, par exemple, irb) obtient échappé aussi. pour l'imprimer, il n'y aura pas deux barres obliques inverses sur l'écran et vous pourrez l'utiliser en Java –

1

est ici une variante rubis pour la méthode phps de addslashes (de http://www.ruby-forum.com/topic/113067#263640). Cette méthode échappe également \ dans la chaîne, avec double \:

class String 
    def addslashes 
    self.gsub(/['"\\\x0]/,'\\\\\0') 
    end 
end 

Ce qui serait bien échapper de Anupam:

"anupam's".addslashes # => "anupam\\'s" 
+0

Je veux vraiment mettre cette chaîne dans le script java (pour former une url) ... il en sera de même pour cette chaîne de travail anupam –

+0

il y a un assistant pour ça dans les rails ... 'escape_javascript' ou ... il suffit d'utiliser "" anupam ".to_json' :) – lwe

Questions connexes