Ruby String pad ноль OPE ID - PullRequest
       37

Ruby String pad ноль OPE ID

1 голос
/ 06 декабря 2010

Я работаю с OPE ID.Один файл имеет их с двумя конечными нулями, например, [998700, 1001900].В другом файле они имеют один или два ведущих нуля общей длиной шесть, например, [009987, 010019].Я хочу преобразовать каждый OPE ID (в обоих файлах) в восьмизначную строку с ровно двумя начальными нулями и сколь угодно большим количеством нулей в конце, чтобы получить длину восемь цифр.

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

Попробуйте это:

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

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]
1 голос
/ 07 декабря 2010

С помощью ответов, данных @detunized & @nimblegorilla, я придумал:

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

чтобы первый описанный мной формат (всегда с двумя конечными нулями) был равен второму.

1 голос
/ 06 декабря 2010

Если ваши данные анализируются и хранятся в виде строк, это можно сделать, например, так.

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

Этот пример на кодовой панели .

Но я очень уверен, что я правильно понял описание. Пожалуйста, проверьте комментарии, и я исправляю их, если это не то, что вы искали.

...