"This is some text".scan("some")
我希望能够像上面那样扫描字符串,但让该方法返回文本的位置,以便可以像这样调用它:
 This is some text"[8..11]
 => "some" 
是否有内置功能?
 "This is some text".scan("some")
我希望能够像上面那样扫描字符串,但让该方法返回文本的位置,以便可以像这样调用它:
 This is some text"[8..11]
 => "some" 
是否有内置功能?
index 方法将为您执行此操作:
"This is some text".index('some')
=> 8
如果您想要该职位,则使用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"