-3
 "This is some text".scan("some")

上記のように文字列をスキャンできるようにしたいのですが、メソッドにテキストの場所を返すようにして、次のように呼び出すことができるようにします。

 This is some text"[8..11]
 => "some" 

これには組み込み関数がありますか?

4

2 に答える 2

2

index メソッドがこれを行います。

"This is some text".index('some')
=> 8
于 2013-06-12T04:50:06.863 に答える
1

位置が必要な場合、使用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"
于 2013-06-12T06:15:26.100 に答える