我有一个地图,可以更改值或将其设置为零.然后我想从列表中删除nil条目.该列表不需要保留.
这就是我目前拥有的:
# A simple example function, which returns a value or nil
def transform(n)
rand > 0.5 ? n * 10 : nil }
end
items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个循环并有条件地收集另一个数组,如下所示:
new_items = []
items.each do |x|
x = transform(x)
new_items.append(x) unless x.nil?
end
items = new_items
Run Code Online (Sandbox Code Playgroud)
但它似乎不是红宝石般的.有没有一种很好的方法可以在列表中运行一个函数来删除/排除nils?
我是Ruby的新手并坚持这个问题.假设我有一个这样的数组:
arr = [1, 2, 's', nil, '', 'd']
Run Code Online (Sandbox Code Playgroud)
我想从中删除nil和空字符串,即最终数组应该是:
arr = [1, 2, 's', 'd']
Run Code Online (Sandbox Code Playgroud)
我尝试了compact但它给出了这个:
arr.compact!
arr #=> [1, 2, 's', '', 'd'] doesn't remove empty string.
Run Code Online (Sandbox Code Playgroud)
我想知道在Ruby中是否有一种聪明的方法.
我正在处理一堆由字符串组成的数组,而且我写过很多次 .delete_if { |str| str.empty? }
现在,我知道我可以自己将这个方法添加到数组类中,但是我希望有一种内置的方法来实现这一点,而不需要在基类中添加非标准方法.与向基类添加方法一样有趣的是,出于可维护性的原因,我不想这样做.
是否有内置的方法来处理这个?
我有一个字符串:
Ayy ***lol* m8\nlol"
Run Code Online (Sandbox Code Playgroud)
我想不包括空捕获和产生:
["Ayy ", "**", "*", "lol", "*", " m8", "\n", "lol"]
Run Code Online (Sandbox Code Playgroud)
我正在通过这个正则表达式拆分字符串:
/(?x)(\*\*|\*|\n|[.])/
Run Code Online (Sandbox Code Playgroud)
这会产生:
["Ayy ", "**", "", "*", "lol", "*", " m8", "\n", "lol"]
Run Code Online (Sandbox Code Playgroud) 如何摆脱数组中的空格和空白项
names = ["alice", "", "bob", " ", "yankee"]
Run Code Online (Sandbox Code Playgroud)
想要的结果应该是
["alice", "bob", "yankee"]
Run Code Online (Sandbox Code Playgroud)