Ruby split par des espaces
Comment puis-je écrire un Rubis fonction qui divise la saisie par tout type d'espaces, et de supprimer tous les espaces de la suite? Par exemple, si l'entrée est
aa bbb
cc dd ee
Puis retourner un tableau ["aa", "bbb", "cc", "dd", "ee"]
.
Vous devez vous connecter pour publier un commentaire.
Les éléments suivants doivent travailler pour l'exemple que vous avez donné:
il retourne:
Sens de code:
/\s+/m
est l'étape la plus difficile.\s
signifie blanc de l'espace, de sorte\s+
signifie un minerai de plus d'espace blanc lettres. Dans le/m
partie,m
est appelé un modificateur, dans ce cas, il signifie, multiligne, sens de visiter beaucoup de lignes, et pas seulement celui qui est le comportement par défaut.Donc,
/\s+/m
les moyens, de trouver des séquences d'un ou plusieurs espaces blancs.gsub
moyens de les remplacer tous.strip
est l'équivalent detrim
dans d'autres langues, et supprime les espaces de l'avant et à la fin de la chaîne.Que, j'ai écrit l'explication, il pourrait être le cas lorsque vous vous retrouvez avec et à la fin de la ligne de caractère à la fin ou au début de la chaîne.
Pour être sûr
Le code peut être écrit comme:
Donc, si vous avez eu:
Puis vous obtenez:
Sens du nouveau code:
^\s+
une séquence d'espaces blancs au début de la chaîne\s+$
une séquence d'espaces blancs à la fin de la chaîneDonc
gsub(/^\s+|\s+$/m, '')
signifie supprimer une séquence d'espaces blancs au début de la chaîne et à la fin de la chaîne.ruby
. Pourquoi ne peut-il pas avoir bibliothèques scientifiques donc je me suis permis de l'utiliser..C'est le comportement par défaut de
String#split
:Résultat:
Cela fonctionne dans toutes les versions de Ruby que j'ai testé, y compris 1.8.7, 1.9.3, 2.0.0, et 2.1.2.
String#split
. Aucune idée de pourquoi personne n'a mentionné que, jusqu'à maintenant...Si
"\s"
est utilisé à la place de/\s/
, les blancs paces sera supprimé à partir du résultat.Comme une légère modification à Vidaica réponse, en Ruby 2.1.1 il ressemble
Permettra de compenser pour tous les espaces, que ce soit des espaces, des tabulations ou des retours à la ligne, à rendement: