0

根据文档#scan应该同时接受StringRegexp实例作为参数。但是测试显示出奇怪的行为:

▶ cat scantest.rb 
#!/usr/bin/ruby
puts '='*10
puts 'foo'.scan '.'
puts '='*10
puts 'foo'.scan /./
puts '='*10

▶ rb scantest.rb
# ⇒ ==========
# ⇒ ==========
# ⇒ f
# ⇒ o
# ⇒ o
# ⇒ ==========

pryand内部irb,它也不能正确扫描字符串。我究竟做错了什么?

4

2 回答 2

2

使用 string '.',它会扫描文字点:

'foo'.scan '.'
# => []
'fo.o'.scan '.'
# => ["."]

使用正则表达式/./时,它匹配任何字符(换行符除外):

'foo'.scan /./
# => ["f", "o", "o"]
"foo\nbar".scan /./
# => ["f", "o", "o", "b", "a", "r"]
于 2013-09-10T06:21:00.753 回答
0

scan应该有一个parameter匹配你想要的字符串,scan否则它将返回空数组

我的情况:

irb(main):039:0> "foo".scan("o")
=> ["o", "o"]

你的情况

   'foo'.scan '.'
    # => []

字符串上没有点.,所以返回'foo'scanempty array

于 2013-09-10T06:25:14.210 回答