Ruby reading Excel包括额外的';[quot;];对于这些值,如何删除它们?

Ruby reading Excel包括额外的';[quot;];对于这些值,如何删除它们?,excel,ruby,rubymine,Excel,Ruby,Rubymine,我有一个非常简单的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 但是输出返回介于[“”]之间的值。[“xxxxxx”][“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我有一个非常简单的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
但是输出返回介于[“”]之间的值。[“xxxxxx”][“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
我怎样才能去掉多余的[“”]而只留下值呢?

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

本文对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|u in|u arr
中缺少paren):

因此,我建议您尝试以下代码,看看它是否符合您的目的:

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

xlsx。每个
生成行,而不是字符串。您可能也想遍历每一行。嗨,Stefan,谢谢您的快速回复;那我怎么才能只得到字符串呢?再加一次迭代,
str.each do | item |
xlsx.each{row | row | row.each{str str |}
应该可以用了。@saratibetts,谢谢,但结果是一样的:[“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb?
xlsx.each do |(str)|
  send_keys_characters(str)
  step %[I wait for 2 sec]
end