我需要将表示数字的数组中的字符串转换为整数。
["", "22", "14", "18"]
Run Code Online (Sandbox Code Playgroud)
进入
[22, 14, 18]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您可以使用以下命令选择包含数字的字符串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/.
要将字符串转换为数字,您可以使用to_i方法。
要转换字符串数组,您需要遍历数组项并将其应用于to_i它们。您可以使用map或map!方法来实现:
> ["", "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!会改变原来的数组。