"This is some text".scan("some")
上記のように文字列をスキャンできるようにしたいのですが、メソッドにテキストの場所を返すようにして、次のように呼び出すことができるようにします。
This is some text"[8..11]
=> "some"
これには組み込み関数がありますか?
"This is some text".scan("some")
上記のように文字列をスキャンできるようにしたいのですが、メソッドにテキストの場所を返すようにして、次のように呼び出すことができるようにします。
This is some text"[8..11]
=> "some"
これには組み込み関数がありますか?
index メソッドがこれを行います。
"This is some text".index('some')
=> 8
位置が必要な場合、使用scan
は適切な方法ではありません。ドキュメントに従って、一致する文字列全体をscan
検索し、見つかったすべてを返します。
その代わり:
/\b some \b/x =~ "This is some text"
=> 8
また:
"This is some text" =~ /\b some \b/x
=> 8
\b
これは、\w
文字クラスにない文字と にある文字の間のスペース\w
です。フラグを使用するx
と、パターンに空白を入れることができますが、それは重要でx
はなく、必要ではありません。パターンを読みやすくするのに便利です。
target = 'some'
str = 'This is some text'
pos = str =~ /\b #{ target } \b/x
str[pos, target.size]
=> "some"