Pour compter le nombre d'espaces au début et à la fin de la chaîne Cette approche nécessite le cas de bord lorsque existe une méthode meilleure (plus élégante / efficace) à le faire? P> P> s code> i code> i:
s < / code> contient des espaces seulement pour être manipulés séparément. P>
5 Réponses :
Vous pourriez le faire à la fois.
_, spaces_at_beginning, spaces_at_end = /^( *).*?( *)$/.match(s).to_a.map(&:length)
Je ne sais pas si c'est plus efficace, mais cela fonctionne aussi.
Il est également facile de faire:
beginning = s.length - s.lstrip.length ending = s.length - s.rstrip.length
Cette approche ne fonctionnera pas si s code> contient d'autres espaces blancs, par ex.
s = "\ tx" code>
Le \ t code> compterait comme un seul espace. Cependant, je n'ai probablement pas compris ce que vous vouliez dire; Comment voudriez-vous traiter l'affaire de tabulation?
\ t code> doit être traité comme tout autre caractère. La question est sur les espaces de comptage.
Je suis désolé alors, je n'ai pas compris correctement votre question :)
beginning_spaces_length , ending_spaces_length = s.split(s.strip).map(&:size)
Une autre version, cela doit être le plus court possible
Meilleur * code> au lieu de
+ code> pour des cas tels que "AA" ou des chaînes vides.