1

我正在使用 OPE ID。一个文件有两个尾随零,例如[998700, 1001900]. 另一个文件有一个或两个前导零,总长度为六个,例如[009987, 010019]. 我想将每个 OPE ID(在两个文件中)转换为一个八位数的字符串,其中正好有两个前导零,但末尾有很多零,以使其长度为八位数。

4

3 回答 3

3

试试这个:

a = [ "00123123", "077934", "93422", "1231234", "12333" ]
a.map { |n| n.gsub(/^0*/, '00').ljust(8, '0') }

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]
于 2010-12-06T20:03:36.127 回答
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

这个例子在键盘上。

不过,我很确定,我的描述完全正确。请检查评论,如果它不是您想要的,我会更正。

于 2010-12-06T19:36:56.813 回答
1

在@detunized 和@nimblegorilla 给出的答案的帮助下,我想出了:

"998700"[0..-3].rjust(6, '0').to_sym

使我描述的第一种格式(始终带有两个尾随零)等于第二种格式。

于 2010-12-06T22:48:04.413 回答