"This is some text".scan("some")
我希望能够扫描上面的字符串但是让方法返回文本的位置,以便可以像这样调用它:
This is some text"[8..11]
=> "some"
这是否有内置功能?
答案 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}}