2013-06-12 35 views
-2
"This is some text".scan("some") 

我想能够扫描类似上面的字符串,但有方法返回文本的位置,以便它可以被称为是这样的:字符串获取扫描文本的位置

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

这是否有内置功能?

+0

我不确定是否正确理解您的问题。你的意思是要问,如果你提供'“这是一些文本”.scan(“一些”)'你想得到[8..11]?请解释。 – vee

+0

我的理解是你想要的子串的索引范围? – squiguy

回答

2

索引方法会为你做到这一点:

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

如果你想要的位置,使用scan是不是合适的方法。根据documentationscan将搜索整个字符串中的匹配项,并返回所有找到的内容。

相反:

/\b some \b/x =~ "This is some text" 
=> 8 

或:

"This is some text" =~ /\b some \b/x 
=> 8 

\b是字 - 边界处,这是任何字符之间的空间不会在\w字符类和一个是在\wx标志可以让我在图案中放入空白区域,但它不重要,并且x不是必需的,这样可以使图案更具可读性。

target = 'some' 
str = 'This is some text' 
pos = str =~ /\b #{ target } \b/x 
str[pos, target.size] 
=> "some"