这是一个类似的问题这一个,即给定字符串的开始和结束索引,用另一个字符串替换它,但我想,以取代使用指标数子.我不能只链接替换,因为索引引用原始字符串.所以我最终计算了字数,但必须有更好的方法.
res = original_string
delta = 0
# to keep things simple, assume replacements just contains objects which have start, end indices and replacements
replacements.each do |r|
old_str = original_str[r.start_offset .. r.end_offset]
new_str = r.replacement
res[r.start_offset + delta .. r.end_offset + delta] = new_str
delta += new_str.size - old_str.size
end
Run Code Online (Sandbox Code Playgroud)
刚开始从最后更换.然后索引始终有效:
# to keep things simple, assume replacements just contains
# objects which have start, end indices and replacements
replacements.sort_by(&:start_offset).reverse.each do |r|
string[r.start_offset..r.end_offset] = r.replacement
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |