从Ruby String中通过索引删除字符

mbm*_*mbm 4 ruby string

给定一系列包含字符串索引,

str_indices = [[1,2],[7,8]],
Run Code Online (Sandbox Code Playgroud)

什么是从字符串中排除这些的最佳方法?

例如,鉴于以上标记为排除的索引和字符串happydays,我想要hpyda返回.

ASh*_*lly 6

使用范围:

str_indices=[[1,2],[7,8]]
str="happydays"
str_indices.reverse.each{|a| str[Range.new(*a)]=''}
str
=> "hpyda"
Run Code Online (Sandbox Code Playgroud)

如果您不想修改原始内容:

str_indices.reverse.inject(str){|s,a|(c=s.dup)[Range.new(*a)]='';c}
Run Code Online (Sandbox Code Playgroud)