微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby阅读Excel在值中包含多余的[[“”]',如何删除它们?

如何解决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

,但输出返回[“”]之间的值,例如[“ xxxxxx”] [“ aaaaaaaaaaaaaaaaaaaa”] [“ bbbbbbbbbbbbbbbbbbbb”] [“ cccccccccccccccc”] 如何去除多余的[“”]并仅保留值?

解决方法

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

本文提供了更广泛的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'],['c'] ].each do |char_in_arr|
irb(main):005:1*   puts char_in_arr.inspect
irb(main):006:1> end
["a"]
["b"]
["c"]
=> [["a"],["c"]]

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。