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

使用ruby在字符串中插入2个破折号的最短方法是什么?

  •  5
  • Shpigford  · 技术社区  · 15 年前

    我需要像这样格式化:040469551-0402-1109

    用ruby做这件事的最短/最有效的方法是什么?

    4 回复  |  直到 15 年前
        1
  •  17
  •   Harpastum    15 年前

    两个简单的插入就可以了:

    example_string.insert(-9, '-').insert(-5, '-')
    

    负数表示从字符串末尾开始计数。如果您愿意,也可以从头开始计算:

    example_string.insert(9, '-').insert(14, '-')
    
        2
  •  6
  •   nicholaides    15 年前

    怎么样

    s = "04046955104021109"
    "#{s[0,9]}-#{s[9,4]}-#{s[13, 4]}"
    
        3
  •  2
  •   Ben    15 年前

    这里有一个小脚本来展示这场比赛:

    pattern = /\A(\d*?)(\d{4})(\d{4})\Z/
    
    s = "04046955104021109"
    
    output = s.gsub(pattern,'\1-\2-\3')
    
        4
  •  1
  •   DigitalRoss    15 年前

    Harpastum 的解决方案,但记录在案。。。

    >> s = '04046955104021109'
    >> s.sub /(....)(....)$/, '-\1-\2'
    => "040469551-0402-1109"