我们说我有这个字符串:
bar="hello kohello hello"
我想要一个函数foo,我给它
foo(bar,"hello")
得到:
[0,8,14]
现在,我可以做(很多选项中的一个):
def foo(str1,substr)
i= -1
substr_length = substr.length()
str1.chars.map{ | char |
i+=1
str1(i,substr_length) == substr ? i : nil
}.select{ |x| x }
end
还有更像“Ruby like”的东西吗?还有Regexp,而不是字符串 感谢。
答案 0 :(得分:0)
在irb
arr = []
bar.scan("hello"){arr.push($~.offset(0)[0])}
现在检查arr
[0,8,14]
添加我的游戏机'代码清晰
1.9.3-p362 :008 > arr = []
=> []
1.9.3-p362 :009 > bar.scan("hello"){arr.push($~.offset(0)[0])}
=> "hello kohello hello"
1.9.3-p362 :010 > arr
=> [0, 8, 14]
对于那些不知道这个神秘的红宝石全局变量的人。
$~
包含上一次成功模式匹配中的MatchData
。
所以它类似于Regexp.last_match
为了找到索引,我们可以找到Regexp.last_match.offset(0)[0]