0

documentationによると、とインスタンスの#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
# ⇒ ==========

pryとの両方の内部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 に答える