以字符串形式获取扫描文本的位置

时间:2013-06-12 04:40:55

标签: ruby-on-rails ruby

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

我希望能够扫描上面的字符串但是让方法返回文本的位置,以便可以像这样调用它:

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

这是否有内置功能?

2 个答案:

答案 0 :(得分:2)

索引方法将为您执行此操作:

"This is some text".index('some')
=> 8

答案 1 :(得分:1)

如果您想要这个位置,使用scan不是合适的方法。根据{{​​3}},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" 不是必需的,这样可以方便地使模式更具可读性。

{{1}}