7
votes

Programme pour changer la voyelle à son numéro d'index dans la chaîne de Ruby

Il s'agit d'un programme de changement de voyelle dans son index:

"C2d4w6rs 10s t15e18bes232527ite32i35 the world"


0 commentaires

3 Réponses :


3
votes

Comme vous pouvez le constater, lorsque vous commencez à remplacer les voyelles avec leurs positions, cela fonctionne lorsque la position est une seule chiffre (c'est-à-dire 1 ou 5 ), mais lorsque la position devient 2-chiffres ( 10 et plus grand) Tous les index trouvés Démarrer à Maj et ARR Les informations ne sont plus correctes.

Je proposerais d'utiliser gsub , puisque tu veux faire Une recherche globale et remplacer, vous l'avez presque fait correctement: xxx


4 commentaires

Merci mec, je ne connaissais pas ce comportement de l'index de Ruby ..solu mon problème avec votre aide ...... merci


Eh bien, je ne suis pas un orateur anglais indigène, alors je demande à me pardonner si mon commentaire semblait impoli ou ne vous inquiétant. Vous proposez de ne pas promouvoir ma propre réponse, mais éduquer généralement sur l'acceptation des réponses et demander à OP de choisir une réponse? Si oui, je suis d'accord, ce serait juste.


Désolé de ne pas vous avoir exactement par ce que vous avez commenté ... Pouvez-vous me dire quel est le point exact? ai-je fait erreur?


Jay, le commentaire d'Alexey est une réponse à un commentaire que j'ai laissé et supprimé par la suite.



3
votes

Tout ce qui suit fait référence à: xxx pré>

sur le problème que vous avez, cassons-le: p> xxx pré>

à Voir les éléments de cet énumérateur qui sont passés par mapper code> à son bloc, nous pouvons le convertir en une matrice: p> xxx pré>

continue: p > xxx pré>

La méthode doit renvoyer: p> xxx pré>

de sorte que vous voyez la divergence commence par 'H' code> 'the' code>, qui est à l'index 13 code>. Le problème se produit lorsque l'élément 10 code> de arr compte code> est transmis au bloc. À ce stade, P>

str.size.times.map { |i| VOWELS.include?(str[i]) ? (i+1).to_s : str[i] }.join
  #=> "C2d4w6rs 10s th15 b18st s23t25 27n th32 w35rld" 


3 commentaires

Merci ...... et ouais j'ai eu la solution alternative pour mon problème comme string.chars.each_with_index.map {| C, i | [aeiou] /i.match (c)? (i + 1) .to_s: c} .join ... Voulez-vous simplement savoir pourquoi au-dessus de la solution ne fonctionne pas ..... Quel est le comportement de l'indexation ....


N'ai-je pas expliqué de manière adéquate le problème avec le code de votre question?


Votre explication est très lucide pour moi ... J'apprécie votre aide pour cela et l'approche n ° 1 est très intelligente et unique pour moi. Merci de votre préoccupation ....



1
votes
#=> 'C2d4w6rs 10s th15 b18st s23t25 27n th32 w35rld'

0 commentaires