gpt4 book ai didi

ruby - 如何删除数组中的空字符串

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:18 26 4
gpt4 key购买 nike

我想让 delete_if 从数组中删除空字符串。使用下面的解决方案,数组仍然包含许多空字符串。

products = my_text.split(/\t+/)
products.delete_if {|element| element == " " || "" || element.nil?}

有什么遗漏吗?

最佳答案

Ed S 解释了您的代码的问题。
否则,你可以做

products.reject! { |s| s.nil? || s.strip.empty? }

为什么需要先测试nil??让我们检查几行。

nil.strip
# NoMethodError: undefined method `strip' for nil:NilClass
" ".strip
# => ""

现在,以不同的顺序,如果对象是字符串,然后是 nil,代码会做什么。

"  ".strip || "  ".nil?
# => ""
nil.strip || nil.nil?
# NoMethodError: undefined method `strip' for nil:NilClass
# Oh you don't want that to happen, do you?

这意味着当您的对象为 nil 时,您不想调用 strip.empty?
如您所知,当您拥有 a || b,如果 a 为真(即既不是 nil 也不是 false),则永远不会调用 b
您首先测试字符串是否为 nil ;如果是,您无需检查正确的部分(因此您不会收到未定义方法错误)并且该对象将从您的产品列表中删除。

关于ruby - 如何删除数组中的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com