这个红宝石做了什么?

Mat*_*iby 7 ruby ruby-on-rails

unless (place =~ /^\./) == 0
Run Code Online (Sandbox Code Playgroud)

我知道除非是喜欢if not但是这个条件呢?

ric*_*cho 12

=~ 意味着匹配正则表达式

/^\./ 是一个正则表达式:

/.../ 是正则表达式的分隔符

^匹配字符串或行\A的开头(仅匹配字符串的开头)

\. 匹配文字.


von*_*rad 9

它检查字符串是否place以句点开头..

考虑一下:

p ('.foo' =~ /^\./) == 0 # => true
p ('foo' =~ /^\./) == 0 # => false
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有必要使用== 0.place =~ /^\./足以满足条件:

p '.foo' =~ /^\./ # => 0 # 0 evaluates to true in Ruby conditions
p 'foo' =~ /^\./ # => nil
Run Code Online (Sandbox Code Playgroud)

编辑:/^\./是一个正则表达式.开始和结束斜杠表示它一个正则表达式,留下重要的位^\..第一个字符^标记"字符串/行的开头"并且\.文字字符.,因为点字符通常被认为是正则表达式中的特殊字符.

要阅读有关正则表达式的更多信息,请参阅Wikipedia或优秀的regular-expressions.info网站.

  • 根本没有必要使用正则表达式.`place.start_with?'.'完全足够了. (8认同)