Échapper les apostrophes et des guillemets dans une chaîne de caractères en ruby?
Comment puis-je échapper les guillemets simples et doubles dans une chaîne de caractères?
Je veux échapper les guillemets simples et doubles ensemble. Je sais comment passer d'eux séparément, mais ne savent pas comment passer les deux.
e.g: str = "ruby 'on rails" " = ruby 'on rails"
Vous devez vous connecter pour publier un commentaire.
Mon manière préférée est de ne pas s'inquiéter au sujet de l'évasion et de l'utiliser plutôt
%q
, qui se comporte comme un guillemet simple chaîne (pas d'interpolation de caractère ou de s'échapper), ou%Q
pour la double chaîne de caractères entre guillemets comportement:Voir https://docs.ruby-lang.org/en/trunk/syntax/literals_rdoc.html#label-Strings et de recherche pour
% strings
.inspect
il. Essayez deputs
à la place.Utilisation de la barre oblique inverse pour échapper les caractères
Vous pouvez utiliser Q chaînes qui vous permettent d'utiliser un délimiteur vous le souhaitez:
Voici une liste complète:
De http://learnrubythehardway.org/book/ex10.html
Je voudrais aller avec un heredoc si je commence à avoir à vous soucier de s'échapper. Il va prendre soin d'elle pour vous:
MARQUEUR délimite le début/la fin de la chaîne. début de la chaîne sur la ligne suivante après l'ouverture de la heredoc, puis à la fin de la chaîne en utilisant le délimiteur de nouveau sur sa propre ligne.
Ce n'tous les échapper nécessaire et permet de convertir une double chaîne de caractères entre guillemets:
Je voudrais utiliser simplement:
str = %(ruby 'on rails ")
Tout simplement parce qu'
%
est synonyme de guillemets doubles(ou %Q) et permet l'interpolation de variables sur la chaîne.Une mise en garde:
À l'aide de
%Q[]
et%q[]
pour les comparaisons de chaînes n'est pas intuitivement coffre-fort.Par exemple, si vous chargez une chose destinée à signifier quelque chose de vide, comme
""
ou''
, vous devez utiliser le réel des séquences d'échappement. Par exemple, disons queqvar
est égal à""
au lieu d'une chaîne vide.Cela permettra d'évaluer à
false
if qvar == "%Q[]"
Que sera-ce,
if qvar == %Q[]
Alors que cela permettra d'évaluer à
true
if qvar == "\"\""
J'ai rencontré ce problème lors de l'envoi de la commande en ligne de vars à partir d'une autre pile pour mon script ruby. Seulement Gabriel de Augusto répondre a fonctionné pour moi.
Voici un exemple de comment utiliser
%Q[]
dans un scénario plus complexe: