-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 回答