Fondamentalement, quelle est la question. Comment puis-je supprimer un caractère à une position d'index donnée dans une chaîne? La classe de cordes ne semble pas avoir de méthodes pour le faire.
Si j'ai une chaîne "bonjour", je veux que la sortie soit ceci p> je fais qu'utilisant p> je ne sais pas si vous utilisez une tranche! Travaillera ici, car il modifiera la chaîne d'origine, non? p> p>
5 Réponses :
ne sera pas str.slice! fais-le? De ruby-doc.org:
str.slice! (fixnum) => fixnum ou nil [...] p>
Deletes the specified portion from str, and returns the portion deleted.
Il renvoie la valeur ASCII du personnage. Je veux que ce soit à gauche de la chaîne à retourner.
Alors str.slice! (Fixnum); str code>.
J'ai fait quelque chose comme ça où c est la chaîne et je suis la position de l'index que je veux supprimer. Y a-t-il une meilleure façon? P> P>
tranche! va modifier la chaîne en place. Alors appelle juste des tranches! Sur votre chaîne avec l'index du caractère que vous voulez supprimé. N'utilisez pas la valeur de retour.
Bien sûr, vous pouvez obtenir exactement le même comportement non destructif que la tranche en utilisant simplement les index de la syntaxe du support: C [0, I] + C [i + 1, C.Length]
Si vous utilisez Ruby 1.8, vous pouvez utiliser Suppry_AT (mélangé à partir d'énumérable), sinon 1.9, vous pouvez utiliser des tranches!.
Exemple: P>
mystring = "hello" mystring.slice!(1) # mystring is now "hllo" # now do something with mystring
delete_at code> ne fait pas partie de énumérable code>. Il ne fait que partie de tableau code>. Donc delete_at code> n'est pas disponible dans string code>.
$ cat m.rb
class String
def maulin! n
slice! n
self
end
def maulin n
dup.maulin! n
end
end
$ irb
>> require 'm'
=> true
>> s = 'hello'
=> "hello"
>> s.maulin(2)
=> "helo"
>> s
=> "hello"
>> s.maulin!(1)
=> "hllo"
>> s
=> "hllo"
Y a-t-il une grande différence entre self.class.new (auto) .Maulin! n code> et self.dup.maulin! n code>?
Pour éviter d'avoir besoin d'avoir besoin de singe patch si vous devez laisser votre chaîne d'origine Non altéré, utilisez string code> Vous pouvez utiliser appuyez sur code>: DUP code>, par exemple. abc.dup.tap code>. p> p>