将字符串数组转换为整数数组

Not*_*ere 2 ruby

我需要将表示数字的数组中的字符串转换为整数。

["", "22", "14", "18"]
Run Code Online (Sandbox Code Playgroud)

进入

[22, 14, 18]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ste*_*fan 6

您可以使用以下命令选择包含数字的字符串grep

["", "22", "14", "18"].grep(/\d+/)
#=> ["22", "14", "18"]
Run Code Online (Sandbox Code Playgroud)

并通过to_i将块传递给以下方式来转换它们grep

["", "22", "14", "18"].grep(/\d+/, &:to_i)
#=> [22, 14, 18]
Run Code Online (Sandbox Code Playgroud)

根据您的输入,您可能需要更具限制性的模式,例如/\A\d+\z/.


Ziv*_*ili 5

要将字符串转换为数字,您可以使用to_i方法。

要转换字符串数组,您需要遍历数组项并将其应用于to_i它们。您可以使用mapmap!方法来实现:

> ["", "22", "14", "18"].map(&:to_i)
# Result: [0, 22, 14, 18]
Run Code Online (Sandbox Code Playgroud)

既然不希望0-就像@Sebastian Palma在评论中所说,您将需要使用额外的操作来删除空字符串:(以下是他的答案!为他的评论投票吧:D)

> ["", "22", "14", "18"].reject(&:empty?).map(&:to_i)
# Result: [22, 14, 18]
Run Code Online (Sandbox Code Playgroud)

之间的差别map,并map!map会返回一个新的数组,而map!会改变原来的数组。