我正在使用OPE ID。一个文件具有两个尾随零,例如[998700, 1001900]
。另一个文件使用一个或两个前导零,总长度为6,例如[009987, 010019]
。我想将每个OPE ID(在两个文件中)转换为一个八位数的字符串,其中只有两个前导零,但最后有多个零,以使其长度为八位。
答案 0 :(得分:3)
试试这个:
a = [ "00123123", "077934", "93422", "1231234", "12333" ]
a.map { |n| n.gsub(/^0*/, '00').ljust(8, '0') }
=> ["00123123", "00779340", "00934220", "001231234", "00123330"]
答案 1 :(得分:1)
如果您将数据解析并存储为字符串,则可以这样做,例如。
n = ["998700", "1001900", "009987", "0010019"]
puts n.map { |i|
i =~ /^0*([0-9]+?)0*$/
"00" + $1 + "0" * [0, 6 - $1.length].max
}
输出:
00998700
00100190
00998700
00100190
此示例位于codepad。
但我非常确定,我的描述完全正确。请检查评论,如果不完全符合您的要求,我会更正。
答案 2 :(得分:1)
借助@detunized&提供的答案。 @nimblegorilla,我想出了:
"998700"[0..-3].rjust(6, '0').to_sym
使我描述的第一种格式(总是有两个尾随零)等于第二种格式。