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

时间:2009-11-09 18:13:44

标签: ruby

这是字符串:04046955104021109

我需要将其格式化为:040469551-0402-1109

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

4 个答案:

答案 0 :(得分:16)

两个简单的插件可以正常工作:

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

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

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

答案 1 :(得分:6)

怎么样

s = "04046955104021109"
"#{s[0,9]}-#{s[9,4]}-#{s[13, 4]}"

答案 2 :(得分:2)

这是一个显示匹配的小脚本:

pattern = /\A(\d*?)(\d{4})(\d{4})\Z/

s = "04046955104021109"

output = s.gsub(pattern,'\1-\2-\3')

答案 3 :(得分:1)

有时候我认为Regexp被过度使用,实际上我有点像Harpastum的解决方案,但是为了记录......

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