J'ai ce code qui imprime chaque caractère d'une chaîne deux fois:
r = "12345"
r.split("").each do |ch|
puts "#{ch}#{ch}"
end
J'obtiens cette sortie:
11
22
33
44
55
Je veux stocker la sortie "1122334455"
dans une variable. Comment réécrire le code pour ce faire?
4 réponses
Une façon de procéder:
r.gsub(/(.)/,'\1\1') #=> "1122334455"
Les réponses de Sagar et Sebastian sont le moyen le plus simple de le faire, mais si vous voulez vous en tenir à votre code d'origine (itérer sur les caractères), alors voici une autre façon:
variable = r.each_char.with_object(""){|c, s| s << c * 2}
# => "1122334455"
Vous pouvez utiliser des caractères pour obtenir chaque caractère de la chaîne en tant que valeur dans un tableau "principal", puis utiliser le format de carte pour les éléments à l'intérieur, puis les joindre tous pour créer une chaîne finale, comme:
r = '12345'
capture = r.chars.map { |ch| ch * 2 }.join
p capture
# "1122334455"
Vous pouvez utiliser Array#sum
dans Ruby> 2.4
'12345'.chars.sum('') { |n| n * 2 }
#=> "1122334455"
Questions connexes
De nouvelles questions
ruby
Ruby est un langage interprété orienté objet dynamique et open source multi-plateforme. La balise [ruby] est destinée aux questions liées au langage Ruby, y compris sa syntaxe et ses bibliothèques. Les questions Ruby on Rails doivent être marquées avec [ruby-on-rails].