Ruby:如果匹配则返回字符串中的第一个字符,如果没有匹配则返回nil?

时间:2015-08-21 13:28:33

标签: ruby

是否有内置的方式来获得第一个匹配或nil为字符串中的字符。

我可以得到像这样的第一个角色

'word'.match('o').to_s

但如果没有匹配则会""而不是

4 个答案:

答案 0 :(得分:8)

使用String#[match_str]

  

如果给出match_str,则在字符串中出现该字符串。

     

如果(...)找不到匹配字符串,则返回nil

'word'['o'] #=> 'o'
'word'['q'] #=> nil

[]方法非常通用,您也可以通过不同方式传递正则表达式。

答案 1 :(得分:2)

你可以这样做:

'word'.scan('o').first #=> "o"

'word'.scan('e').first #=> nil

答案 2 :(得分:1)

'word'.match(?o)[0] rescue nil
#=> "o"

'word'.match(?q)[0] rescue nil
#=> nil

答案 3 :(得分:0)

'word'.match(/(o)/) && $1
#⇒ "o"
'word'.match(/(s)/) && $1
#⇒ nil