9
votes

RUBY: Comment compter le nombre d'espaces au début et à la fin d'une chaîne?

Pour compter le nombre d'espaces au début et à la fin de la chaîne s i i: xxx

Cette approche nécessite le cas de bord lorsque s < / code> contient des espaces seulement pour être manipulés séparément.

existe une méthode meilleure (plus élégante / efficace) à le faire?


0 commentaires

5 Réponses :


3
votes

Vous pourriez le faire à la fois.

_, spaces_at_beginning, spaces_at_end = /^( *).*?( *)$/.match(s).to_a.map(&:length)


0 commentaires

2
votes

Je ne sais pas si c'est plus efficace, mais cela fonctionne aussi. xxx


0 commentaires

0
votes

Il est également facile de faire:

beginning =  s.length - s.lstrip.length
ending = s.length - s.rstrip.length


4 commentaires

Cette approche ne fonctionnera pas si s contient d'autres espaces blancs, par ex. s = "\ tx"


Le \ t 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 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 :)



1
votes
beginning_spaces_length , ending_spaces_length = s.split(s.strip).map(&:size) 

0 commentaires

15
votes

Une autre version, cela doit être le plus court possible xxx


1 commentaires

Meilleur * au lieu de + pour des cas tels que "AA" ou des chaînes vides.