de ruby-doc.org sur le modèle de remplacement pour gsub
:
les séquences \ 1, \ 2, et ainsi de suite peuvent être utilisés pour interpoler des groupes successifs lors de la rencontre
Ceci inclut la séquence \'
, qui signifie "tout ce qui suit ce que j'ai apparié".
Soit "\\'"
ou '\\\''
sera à la fois produire \'
(rappelez-vous que \
doit être échappé dans les deux doubles et chaînes entre guillemets simples, et que '
doit être échappé dans les chaînes entre guillemets simples, donc en utilisant les guillemets simples dans cette cas fait réellement les choses plus verbose). .: par exemple
puts "before*after".gsub("*", "\\'")
"beforeafterafter"
puts "before*after".gsub("*", '\\\'')
"beforeafterafter"
Qu'est-ce que vous voulez gsub
voir est alors en fait \\'
, qui peut être produit à la fois par "\\\\'"
et '\\\\\''
. Alors:
puts s.gsub("'", "\\\\'")
children\'s world
puts s.gsub("'", '\\\\\'')
children\'s world
ou si vous avez à faire beaucoup avec \
vous pourriez profiter du fait que lorsque vous utilisez /.../
(ou %r{...}
) vous n'avez pas de double-les backslashs:
puts s.gsub("'", /\\'/.source)
children\'s world
Il devient le monde des enfants. – Jirapong
Non, ce n'est pas le cas. – Magnar
@Jirapong La raison pour laquelle vous pensez que ça se passe est parce que la console des rails n'affiche pas la chaîne, mais affiche comment on pourrait construire la chaîne. Donc, si vous entrez "\\", l'événement "\\" s'affichera bien qu'il s'agisse d'une chaîne avec une seule barre oblique inverse. Pour découvrir ce qui est vraiment dans la chaîne, vous devez utiliser ** puts **. Par exemple, "\\" affiche un seul antislash. – Brian