【问题标题】:best way to remove strings in array with Ruby使用 Ruby 删除数组中字符串的最佳方法
【发布时间】:2012-09-14 19:32:22
【问题描述】:

假设我有这个数组:

array = ["str1", "str2", "str3", "str4", "str5", "str6", "str7", "str8"]

我在做什么:

array.delete_if {|i| i == "str1" || i == "str3" || i == "str5"}

我明白了:

["str2", "str4", "str6", "str7", "str8"]

在 ruby​​ 中有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:

    你可以这样做:

    array - %w{str1 str2 str3}
    

    请注意,这会返回一个删除了"str1""str2""str3" 的新数组,而不是直接修改array(如delete_if 所做的那样)。您可以像这样简洁地将新数组重新分配给array

    array -= %w{str1 str2 str3}
    

    【讨论】:

    • array -= %w[ ... ] 会进行就地重新分配,但不会更改对原始数组的任何引用。
    • 好主意;我将其添加到原始答案中。
    • 大家都知道,%w{word word2} 不接受包含字符串的变量。我不知道,它不会从数组中删除字符串。我用array -= [variable_containing_string] 让它工作
    【解决方案2】:
    array.reject{|e| e=~ /str[135]/}
    

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 2011-10-03
      • 2011-08-29
      • 1970-01-01
      • 2010-10-12
      • 2013-09-18
      相关资源
      最近更新 更多