我正在尝试删除数组元素的空白区域,但同时我希望这是内联替换。是这样的事情可以做..
lines[3..lines.length-4].map!(&:strip).delete_if { |table_name| table_name == "" }
答案 0 :(得分:1)
当您在map!
上调用lines[3..lines.length-4]
时,此方法不会在原始数组上调用,而是在新数组上调用,该方法包含原始lines
数组的切片。如果你需要的是用你的剥离和过滤元素替换部分lines
数组,你可以这样做:
lines[3..lines.length-4] = lines[3..lines.length-4].map(&:strip).reject { |tn| tn == "" }
在此处,您在对其包含的元素进行条带化和过滤后显式覆盖lines
数组的切片。
答案 1 :(得分:1)
它不起作用,因为lines[3..lines.length-4]
返回一个新数组,而不是旧数组的部分“引用”(因此你的map!
只是在原地修改这个新数组)。
一个想法:
(3..lines.length-4).each { |idx| lines[idx].strip! }