Quel est le meilleur moyen de savoir si une chaîne commence par une autre en Ruby (sans rails)?
Réponses
Trop de publicités?Comme il existe plusieurs méthodes présentées ici, je voulais savoir laquelle était la plus rapide. Utilisation de Ruby 1.9.3p362:
irb(main):001:0> require 'benchmark'
=> true
irb(main):002:0> Benchmark.realtime { 1.upto(10000000) { "foobar"[/\Afoo/] }}
=> 12.477248
irb(main):003:0> Benchmark.realtime { 1.upto(10000000) { "foobar" =~ /\Afoo/ }}
=> 9.593959
irb(main):004:0> Benchmark.realtime { 1.upto(10000000) { "foobar"["foo"] }}
=> 9.086909
irb(main):005:0> Benchmark.realtime { 1.upto(10000000) { "foobar".start_with?("foo") }}
=> 6.973697
Il semble donc que start_with?
est le plus rapide du groupe.
La méthode mentionnée par steenslag est laconique, et compte tenu de la portée de la question, il devrait être considéré comme la réponse correcte. Cependant, il est également utile de savoir que cela peut être réalisé avec une expression régulière, qui, si vous n'êtes pas déjà familier avec Ruby, est une compétence importante à apprendre.
Avoir un jeu avec Rubular: http://rubular.com/
Mais dans ce cas, la suite ruby retournera true si la chaîne de caractères sur la gauche commence avec "abc". Le \A dans la regex littéral sur la droite signifie "le début de la chaîne". Avoir un jeu avec rubular - il deviendra clair comment les choses fonctionnent.
'abcdefg' =~ /\Aabc/