124 votes

Ruby: Comment obtenir le premier caractère d'une chaîne

Comment puis-je obtenir le premier caractère d'une chaîne à l'aide de Ruby?

En fin de compte ce que je fais est de prendre quelqu'un en son nom de famille et simplement la création d'un premier.

Donc, si la chaîne a été "Smith" je veux juste un "S".

141voto

iconoclast Points 3743

Vous pouvez utiliser Ruby ouvrir des classes pour rendre votre code plus lisible. Par exemple, ceci:

class String
  def initial
    self[0,1]
  end
end

vous permettra d'utiliser l' initial méthode sur n'importe quelle chaîne. Donc, si vous avez les variables suivantes:

last_name = "Smith"
first_name = "John"

Ensuite, vous pouvez obtenir les initiales très proprement et lisiblement:

puts first_name.initial   # prints J
puts last_name.initial    # prints S

L'autre méthode mentionnés ici ne fonctionne pas sur Ruby 1.8 (non pas que vous devriez être à l'aide de 1,8 plus de toute façon!--mais quand cette réponse a été posté, il était encore assez commun):

puts 'Smith'[0]           # prints 83

Bien sûr, si vous n'êtes pas de le faire sur une base régulière, puis la définition de la méthode peut-être exagéré, et vous pouvez simplement le faire directement:

puts last_name[0,1] 

114voto

Jörg W Mittag Points 153275

Si vous utilisez une version récente de Ruby (1.9.0 ou plus tard), la suivante devrait fonctionner:

'Smith'[0] # => 'S'

Si vous utilisez 1.9.0+ ou 1.8.7, la suivante devrait fonctionner:

'Smith'.chars.first # => 'S'

Si vous utilisez une version antérieure à la version 1.8.7, cela devrait fonctionner:

'Smith'.split(//).first # => 'S'

Notez que 'Smith'[0,1] ne pas travailler sur la 1.8, il ne sera pas vous donner le premier caractère, il ne fera que vous donner le premier octet.

33voto

Andrew Grimm Points 22996
"Smith"[0..0]

fonctionne dans les deux ruby 1.8 et ruby 1.9.

28voto

Brandon Points 98

Par souci d'exhaustivité, depuis Ruby 1.9 Chaîne#chr retourne le premier caractère d'une chaîne. Il est encore disponible dans la version 2.0 et 2.1.

"Smith".chr    #=> "S"

http://ruby-doc.org/core-1.9.3/String.html#method-i-chr

14voto

Wayne Conrad Points 31052

En IRM 1.8.7 ou plus:

'foobarbaz'.each_char.first

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X