/ / Supprimer tout sauf les caractères d'une chaîne? [fermé] - rubis

Supprimer tout sauf les caractères d'une chaîne? [fermé] - rubis

Je commence actuellement par le rubis, et dans les devoirs de mon cours, il est demandé de manipuler des cordes, ce qui soulève une question.

Étant donné un lien de chaîne, ceci:

I"m the janitor, that"s what I am!

La tâche consiste à supprimer tout sauf les caractères de la chaîne afin que le résultat soit

IamthejanitorthatswhatIam

Une façon d'y parvenir serait

"I"m the janitor, that"s what I am!".gsub(" ", "").gsub(",","").gsub(""","").gsub("!","")

Cela fonctionne, mais il semble assez maladroit. Une autre façon de gérer cette tâche serait probablement les expressions régulières. Existe-t-il un moyen plus "rubis" pour y parvenir?

Merci d'avance

Réponses:

4 pour la réponse № 1

Utilisez une expression régulière au lieu de chaînes dans .gsub, comme /W/, qui correspond à des caractères autres que des mots:

ruby-1.9.3-p194 :001 > x = "I"m the janitor, that"s what I am!"
=> "I"m the janitor, that"s what I am!"

ruby-1.9.3-p194 :002 > x.gsub(/W/, "")
=> "ImthejanitorthatswhatIam"

Comme l'a souligné @nhahtdh, cela comprend les chiffres et les traits de soulignement.

Une expression régulière qui peut accomplir cette tâche sans le faire est /[^a-zA-Z]/:

ruby-1.9.3-p194 :001 > x = "I"m the janitor, that"s what I am!"
=> "I"m the janitor, that"s what I am!"

ruby-1.9.3-p194 :003 > x.gsub(/[^a-zA-Z]/, "")
=> "ImthejanitorthatswhatIam"