【发布时间】:2010-10-13 17:12:38
【问题描述】:
.each_key {|a| self[a].strip! if self[a].respond_to? :strip! }
...但它是用于哈希的,而我正在尝试对数组做同样的事情。
【问题讨论】:
标签: ruby-on-rails ruby arrays
.each_key {|a| self[a].strip! if self[a].respond_to? :strip! }
...但它是用于哈希的,而我正在尝试对数组做同样的事情。
【问题讨论】:
标签: ruby-on-rails ruby arrays
这就是collect 的用途。
以下处理nil 元素,不理会它们:
yourArray.collect{ |e| e ? e.strip : e }
如果没有nil元素,你可以使用:
yourArray.collect(&:strip)
...简称:
yourArray.collect { |e| e.strip }
strip! 的行为类似,但它将已经“剥离”的字符串转换为nil:
[' a', ' b ', 'c ', 'd'].collect(&:strip!)
=> ["a", "b", "c", nil]
【讨论】:
.strip 不应该永远返回nil。 .strip! 虽然返回 nil 如果它没有剥离任何东西。我可以通过交互式 shell (irb) 确认这一点。
|| x吗?
如果您不介意先删除nil 元素:
YourArray.compact.collect(&:strip)
【讨论】:
Array 上调用compact。对于您的答案,请提供 a.compact.collect(&:strip) 之类的内容或使用 yourArray,如 Jamie 的答案中所示。我知道你会使用伪代码,但它有助于提问者在技术上准确。
【讨论】:
myArray.collect(&:squish)
调整你找到的方法,从处理哈希到处理数组:
[' c ', 'd', nil, 6, false].each { |a| a.strip! if a.respond_to? :strip! }
=> ["c", "d", nil, 6, false]
【讨论】:
puts x[0].class)。如果不是字符串,则不能对它们使用字符串的strip! 方法。