根据documentation,#scan
应接受String
和Regexp
个实例作为参数。但测试显示出奇怪的行为:
▶ cat scantest.rb
#!/usr/bin/ruby
puts '='*10
puts 'foo'.scan '.'
puts '='*10
puts 'foo'.scan /./
puts '='*10
▶ rb scantest.rb
# ⇒ ==========
# ⇒ ==========
# ⇒ f
# ⇒ o
# ⇒ o
# ⇒ ==========
在pry
和irb
内部,它也无法正确扫描字符串。我做错了什么?
答案 0 :(得分:2)
使用字符串'.'
,它会扫描文字点:
'foo'.scan '.'
# => []
'fo.o'.scan '.'
# => ["."]
使用正则表达式/./
时,它匹配任何字符(换行符除外):
'foo'.scan /./
# => ["f", "o", "o"]
"foo\nbar".scan /./
# => ["f", "o", "o", "b", "a", "r"]
答案 1 :(得分:0)
您的scan
应该有parameter
与您想要的字符串scan
相匹配,否则它将返回空的arrray
我的情况:
irb(main):039:0> "foo".scan("o")
=> ["o", "o"]
你的案子
'foo'.scan '.'
# => []
.
字符串中没有点'foo'
,因此scan
返回empty array