首页 > 解决方案 > Ruby 阅读 Excel 在值中包含额外的 '[" "]',我该如何删除它们?

问题描述

我有这个非常简单的 Ruby 代码

xlsx = Roo::Excelx.new($docs_dir + '/mytestsheet.xlsx')
xlsx.each do |str|
  send_keys_characters(str)
  step %[I wait for 2 sec]
end
end

但是输出返回 [" "] .eg ["xxxxxx"]["aaaaaaaaaaaaaaaaaaaaa"]["bbbbbbbbbbbbbbbbbbbb"]["cccccccccccccccccc"] 之间的值我怎样才能去掉多余的 [" "] 并只留下值?

标签: excelrubyrubymine

解决方案


在这种情况下,我喜欢的一种方法是解构块参数。

本文对 Ruby 中的解构提供了更广泛的概述: https ://jsarbada.wordpress.com/2019/02/05/destructuring-with-ruby/

对于您的示例:

您可以使用括号告诉块您期望一个数组作为参数,并且您希望使用该数组中的元素,而不是数组本身:

irb(main):001:0> [ ['a'], ['b'], ['c'] ].each do |(char)|
irb(main):002:1*   puts char.inspect
irb(main):003:1> end
"a"
"b"
"c"
=> [["a"], ["b"], ["c"]]

注意正在打印的内容。那些是字符串。|(char)|( 而不是)的解构语法|char|导致变量char被分配到数组的第一个元素,而不是被分配到数组本身。我相信这与您想要的相似。

您的代码更像这样,没有解构(请注意 内缺少括号|char_in_arr|):

irb(main):004:0> [ ['a'], ['b'], ['c'] ].each do |char_in_arr|
irb(main):005:1*   puts char_in_arr.inspect
irb(main):006:1> end
["a"]
["b"]
["c"]
=> [["a"], ["b"], ["c"]]

所以我建议你试试下面的代码,看看它是否符合你的目的:

xlsx.each do |(str)|
  send_keys_characters(str)
  step %[I wait for 2 sec]
end

推荐阅读