2013-09-08 2 views
1

J'ai créé un programme simple pour poser quelques questions à un amateur de sport. Voici le code que j'ai jusqu'à présent:Comment mettre en majuscule la première lettre d'un tableau de chaînes en utilisant la méthode capitaliser?

puts "What's your favorite pro sport?" 
favorite_sport = gets.chomp 

puts "Who's your favorite team in the #{favorite_sport}?" 
favorite_team = gets.chomp 

puts "What city are they from?" 
team_city = gets.chomp 

puts "Who's your favorite player in the #{favorite_team} roster?" 
favorite_player = gets.chomp 

puts "What position does #{favorite_player} play?" 
player_position = gets.chomp 

puts "How many years has #{favorite_player} played in the #{favorite_sport}" 
years_experience = gets.chomp 

fan_info = [favorite_sport, favorite_team, team_city, favorite_player, player_position, years_experience] 
puts fan_info 

Je veux avoir la sortie du programme du fan_info avec la première lettre de la chaîne en majuscule. Comment puis-je faire cela? Je sais que je dois utiliser la méthode capitalize mais j'ai du mal à l'implémenter.

Voici un exemple de l'entrée et de sortie:

What's your favorite pro sport? 
NFL 
Who's your favorite team in the NFL? 
Seahawks 
What city are they from? 
seattle 
Who's your favorite player in the Seahawks roster? 
wilson 
What position does wilson play? 
qb 
How many years has wilson played in the NFL 
1 
NFL 
Seahawks 
seattle 
wilson 
qb 
1 
+1

Pour l'entrée utilisateur '" NFL "', voulez-vous que la sortie soit '" Nfl "' ou '" NFL "'? – sawa

+0

Bonne prise! Oui, je voulais le laisser à la NFL. Même s'il n'est pas entré tout capitalisé. –

Répondre

2

Si votre intention est de capitaliser la première lettre en gardant les autres lettres intactes (c.-à-"NFL" séjours être "NFL", et ne devient pas "Nfl"), puis faites:

favorite_sport = gets.chomp.sub(/./, &:upcase) 
... 
+0

Serait-ce sur every gets.chomp? –

+0

Oui. Ou, vous pouvez le faire en même temps pour les chaînes du tableau en utilisant 'map'. Dans ce cas, cela n'a pas de sens de garder 'chomp' séparé. Il devrait également être placé dans le bloc 'map'. – sawa

3

Essayez ceci:

puts fan_info.map(&:capitalize) 

Cela appelle #capitalize sur chaque chaîne, construit un nouveau tableau de tous les résultats, et des impressions qui à la place.

Il est équivalent à quelque chose comme ceci:

fan_info_capitalized = [] 
fan_info.each do |inf| 
    fan_info_capitalized << inf.capitalize 
end 
puts fan_info_capitalized 

Seulement beaucoup plus compact.

+0

Le problème avec l'utilisation de cette façon, 'capitalize' va transformer tous les caractères de la chaîne en minuscules, puis majuscule le premier caractère, détruisant le cas des noms propres et des abréviations. '' foo BAR'.capitalize # => "Foo bar" ' –

+0

En effet, l'affiche devrait voir et remédier à de telles choses. –

Questions connexes