7 votes

Méthode Ruby de suppression (manipulation de chaînes de caractères)

Je suis novice en matière de Ruby, et j'ai parcouru le Humble Little Ruby Guide de Mr Neighborly. Il y a eu quelques fautes de frappe dans les exemples de code en cours de route, mais j'ai toujours réussi à trouver ce qui n'allait pas et à le corriger par la suite - jusqu'à aujourd'hui !

C'est vraiment basique, mais je n'arrive pas à faire fonctionner l'exemple suivant sur Mac OS X (Snow Leopard) :

gone = "Got gone fool!"
puts "Original: " + gone
gone.delete!("o", "r-v")
puts "deleted: " + gone

Le résultat que j'attends est le suivant :

Original: Got gone fool!
deleted: G gne fl!

Le résultat que j'obtiens est le suivant :

Original: Got gone fool!
deleted: Got gone fool!

La méthode delete ! ne semble pas avoir eu d'effet.

Quelqu'un peut-il nous éclairer sur ce qui ne va pas ici ? :-\N- La question est de savoir ce qui se passe.

11voto

Steve Weet Points 15395

En String.delete méthode ( Documenté ici ) traite ses arguments comme des tableaux et supprime les caractères en fonction de la valeur de l'attribut intersection de ses tableaux.

L'intersection de deux tableaux est constituée de tous les caractères communs aux deux tableaux. Ainsi, votre suppression initiale de gone.delete!("o", "r-v") deviendrait

gone.delete ['o'] & ['r','s','t','u','v']

Il n'y a aucun caractère présent dans les deux tableaux, de sorte que la suppression donnerait un tableau vide, et donc aucun caractère n'est supprimé.

2voto

Sid Heroor Points 526

J'ai changé

gone.delete!("o", "r-v")

à

gone.delete!("or-v")

et cela fonctionne bien.

1voto

Salil Points 20300

Vous obtenez le même o/p en utilisant une autre méthode, par exemple gsub

puts "deleted: " + gone.gsub('o', '')

o/p

deleted: Got gone fool!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X