我正在使用OPE ID。一个文件让它们带有两个尾随的零,例如 [998700, 1001900]. 。另一个文件将它们带有一个或两个领先的零,总长度为六个,例如 [009987, 010019]. 。我想将每个OPE ID(在两个文件中)转换为一个八位数的字符串,恰好有两个领先的零,而最终的许多零是使其长八位数字。

有帮助吗?

解决方案

尝试这个:

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

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]

其他提示

如果您将数据解析并存储为字符串,则可以这样做。

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.

我非常确定,我得到了描述的正确性。请检查评论,如果您不完全是您要寻找的内容,我会更正。

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

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

为了使我描述的第一种格式(总是用两个尾随的零)等于第二个格式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top