façon la plus simple de vérifier juste des espaces en ruby
Donc je sais que dans rubis x.néant? permettra de tester si x est nulle.
Quel est le moyen le plus simple pour tester si x est égal à '' ou ' '(deux places), ou ' (trois places), etc?
En gros, je me demandais quelle est la meilleure façon de tester si une variable est tous les espaces?
- permettez-moi de réellement préciser ma question, car elle n'était pas totalement clair... im fait de l'exécution de cette, dans le cadre d'une instruction if. donc im vérification de x.néant? et je tiens aussi à x.(il y a seulement les espaces ici, donc je considère qu'il est nul), à la fois d'être évalué de manière conditionnelle
- quand vous dites
nil
voulez-vous dire une chaîne vide? Ils ne sont pas les mêmes en Ruby. (Ouvrir uneirb
session et vérifier:x = ''; x.nil?
.) - pourquoi ne pas le découper?
Vous devez vous connecter pour publier un commentaire.
Regex solution. Voici un court ruby regex tutoriel.
/^\s+$/
depuis le*
va correspondre à une trop grande quantité (par exemple, vous obtenez un match pour une chaîne vide - pas du tout des espaces).\A
et\Z
au lieu de^
et$
-- la chaîne"abc\n \ndef"
correspondent à votre regex.Si vous êtes à l'aide de Rails, vous pouvez simplement utiliser:
C'est sûr, à appeler lorsque x est nul, et retourne true si x est nul ou tous les espaces.
Si vous n'êtes pas à l'aide de Rails, vous pouvez obtenir à partir de la
activesupport
gem. Installer avecgem install activesupport
. Dans votre fichier soitrequire 'active_support/core_ext
pour obtenir tout le soutien actif des extensions pour les classes de base, ourequire 'active_support/core_ext/string'
, pour obtenir les extensions à l'String
classe. De toute façon, leblank?
méthode sera disponible après le nécessitent."meilleur" dépend du contexte, mais ici, c'est une manière simple.
Si
x
est tous les espaces, puisx.strip
sera une chaîne vide. De sorte que vous pouvez faire:Alternativement, à l'aide d'une expression régulière,
x =~ /\S/
retournera false si et seulement six
est tous les espaces:!~
dans le second et obtenir le résultat booléen droite./\S/
ne pas vous montrer qu'une chaîne de caractères est tous les espaces. Il détermine s'il y a quoi que ce soit dans la chaîne n'est pas espaces. Cela peut parfois question - au moins, si l'on considère une chaîne vide pour être différent d'une chaîne de tous les espaces.En fonction de votre commentaire, je pense que vous pouvez étendre la classe String et de définir un
spaces?
méthode comme suit:Encore un autre 🙂
string.all? { |c| c == ' ' }