代码之家  ›  专栏  ›  技术社区  ›  NothingToSeeHere

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

  •  14
  • NothingToSeeHere  · 技术社区  · 7 年前

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

    ["", "22", "14", "18"]
    

    进入

    [22, 14, 18]
    

    我该怎么做?

    2 回复  |  直到 7 年前
        1
  •  33
  •   Ziv Galili    7 年前

    要将字符串转换为数字,您需要 to_i 方法

    要转换字符串数组,需要遍历数组项并应用 to\u i 在他们身上。你可以通过 map map! 方法:

    > ["", "22", "14", "18"].map(&:to_i)
    # Result: [0, 22, 14, 18]
    

    既然不想 0 -正如@SebastianPalma在评论中所说,您需要使用额外的操作来删除空字符串:(以下是他的答案!请投票支持他的评论:D)

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

    两者之间的区别 地图 地图 是吗 地图 将返回一个新数组,而 地图 将更改原始数组。

        2
  •  3
  •   Stefan    7 年前

    您可以使用选择包含数字的字符串 grep :

    ["", "22", "14", "18"].grep(/\d+/)
    #=> ["22", "14", "18"]
    

    并通过 to_i 通过将块传递给 格雷普 :

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

    根据您的输入,您可能需要更严格的模式,如 /\A\d+\z/ .

    推荐文章