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

删除两个数字之间的空格

  •  1
  • Ben  · 技术社区  · 6 年前

    如何删除两个数字之间的空格? 我有一个字符串“1026 personnels aiment§A”,我只想得到1026(整数)

    text = "1 026 personnes aiment ça"
    # => "1 026 personnes aiment ça"
    z = text.split(' ').first
    # => "1 026"
    z.to_i
    # => 1
    z.strip
    # => "1 026"
    z.class
    # => String
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   Viktor    6 年前

    这个 #gsub 方法可以替换字符串中的所有非数字字符,然后可以将其转换为 #to_i :

    "1 026 personnes aiment ça".gsub(/\D/, "").to_i
    #~> 1026
    
        2
  •  1
  •   Yaser Darzi Muhammed Albarmavi    6 年前

    你可以试试这对我有用

    (?<=\d) +(?=\d+(?:\s|$))
    
        3
  •  0
  •   Simon Crane    6 年前

    例如,您可以执行以下操作:

    text = "1 026 personnes aiment ça"
    z = text.split(' ')
    z = z[0]+ z[1]
    z.to_i
    
        4
  •  0
  •   Mendoza    6 年前

    我会使用正则表达式(请记住,如果您进行大量迭代,这可能会变慢)

    '1 026 personnes aiment ça'.match(/\d{1,3} \d{1,3}/)
                               .to_s
                               .tr(' ','')
                               .to_i
    # => 3123
    

    这将:

    • 匹配前两组3个或更少的数字
    • 将其转换为字符串(MatchData只有将结果转换为字符串或数组的方法)
    • 用空字符串替换空格
    • 将字符串转换为整数

      “1026人目标§A”。匹配(/\d{1,3}\d{1,3}/)

    请记住,这将无声地失败,我会根据您期望的文本类型更改regex。

    例如,如果您希望字符串的第一个字符是数字,我将添加 ^ (表示行首)。

    '1 026 personnes aiment ça'.match(/^\d{1,3} \d{1,3}/)
                               .to_s
                               .tr(' ','')
                               .to_i
    
        5
  •  0
  •   Sebastián Palma    6 年前

    [] tr 避免 gsub :

    "1 026 personnes aiment ça"[/\d+ ?\d+/].tr(' ', '').to_i
    # 1026
    
    推荐文章