在将字符串转换为数组之前删除空值

Remove empty value before converting string to array

ids = "1,4,5,"

ids.split(',') => ["1", " 4", " 5", " "]

ids.split(',').map(&:to_i) => [1, 4, 5, 0]

如何在空值变为零之前将其删除?

您也可以使用#scan

ids = "1,4,5,"
ids.scan(/\d+/).map(&:to_i)
# => [1, 4, 5]

这不会发生在 Ruby 2.2+:

ids = "1,4,5,"
ids.split(',')
# => ["1", "4", "5"]

RUBY_VERSION # => "2.2.0"

简单的做法是 运行 对您的数据进行预检,并在尝试处理数据之前将其规范化为应有的状态:

ids = "1,4,5,"

ids.chop! if ids[-1] == ','
ids # => "1,4,5"

ids.split(',')
# => ["1", "4", "5"]

您可以在测试中更严格一些,因为行尾也可能包含空格,这会导致清理失败。

此外,您正在处理以逗号分隔的数据,因此请考虑使用内置的 CSV class,它专为处理此类字符串而设计。