这是字符串:04046955104021109
我需要将其格式化为:040469551-0402-1109
用ruby做这个最短/最有效的方法是什么?
答案 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"