"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"