Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top