如何在Ruby on Rails中处理数组时跳过首个元素的双引号包裹操作
方案1:最小改动原有逻辑(推荐,不影响现有escape方法的其他调用)
单独提取首元素做特殊处理,剩余元素沿用原有的转义逻辑:
@wrap_char = '"' def escape(text) if text.present? @wrap_char + text.to_s.tr(',', ';') + @wrap_char else @wrap_char + @wrap_char end end arr = ['2','SE','STKT','','','',''] # 首元素仅替换逗号,不包裹双引号 first_item = arr.first.to_s.tr(',', ';') # 剩余元素走原有转义逻辑 rest_items = arr.drop(1).map(&method(:escape)) # 拼接输出 result = [first_item, *rest_items].join(',') << "\n"
运行后输出为你需要的2,"SE","STKT","","","",""。
方案2:合并逻辑写法
如果不需要复用escape方法,可以直接用带索引的遍历完成所有处理,不用单独定义方法:
@wrap_char = '"' arr = ['2','SE','STKT','','','',''] result = arr.map.with_index do |item, index| processed_text = item.to_s.tr(',', ';') # 下标为0的首元素不包裹,其余元素按规则包裹 index == 0 ? processed_text : "#{@wrap_char}#{processed_text}#{@wrap_char}" end.join(',') << "\n"
内容的提问来源于stack exchange,提问作者MaoTse
相关产品推荐
相关产品推荐

