113 votes

opérateur ruby "= ~"

En ruby, j'ai lu certains des opérateurs, mais je n'ai pas trouvé =~ . Qu'est-ce que =~ ou qu'est-ce que cela signifie? Le programme que j'ai vu a

 regexs = (/\d+/)
a = somestring
if a =~ regexs
 

Je pense qu'il s'agissait de comparer si somestring égal à des chiffres, mais existe-t-il une autre utilisation et quelle est la définition appropriée de l'opérateur =~ ?

158voto

Mike Lewis Points 29305

L'opérateur =~ compare l'expression régulière à une chaîne et renvoie soit le décalage de la correspondance à partir de la chaîne si elle est trouvée, sinon nil.

 ruby-1.9.2-p136 :003 > /mi/ =~ "hi mike"
 => 3 
ruby-1.9.2-p136 :004 > "hi mike" =~ /mi/
 => 3 

ruby-1.9.2-p136 :005 > "mike" =~ /ruby/
 => nil 
 

Vous pouvez placer la chaîne / regex de chaque côté de l'opérateur, comme vous pouvez le voir ci-dessus.

38voto

DigitalRoss Points 80400

Cet opérateur compare les chaînes aux expressions régulières.

 >> s = 'how now brown cow'

>> s =~ /cow/
=> 14
>> s =~ /now/
=> 4
>> s =~ /cat/
=> nil
 

Si la chaîne correspond à l'expression, l'opérateur renvoie l'offset et sinon, il renvoie nil. C'est un peu plus compliqué que cela: voir la documentation ici; c'est une méthode de la classe String.

17voto

Tim Destan Points 1297

= ~ est un opérateur de correspondance d'expressions régulières qui renvoie l'index du début de la correspondance (ou nil s'il n'y a pas de correspondance).

Voir ici pour la documentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X