Мне любопытно, как бухгалтерские программы позволяют увеличивать «номер счета» ie от увеличения INV-001 до INV-002. Давайте разберемся, сосредоточив внимание только на «001».
Я сделал «поиск в Google» и нашел использование "%03d"
:
puts "%03d" % 1
#=> "001"
Это начало, но я борюсь с много вариантов:
str = "001"
str = "009"
В школе нас учили:
# Let's assume we knew nothing about strings
001 + 1 # gives us 002. How?
# This is what really happens
#
# 001
# + 1
# ______
# 002
Используя вышеизложенное, если мы «добавим» 009 + 1, мы получим 010
, если мы используем выше метод.
С программированием все по-другому, так как преобразование "001" в целое число становится 1
.
Как создать метод, который знает, как добавить "001"
плюс 1
, который возвращает "002"
?
Я предполагаю, что с формулой выше происходит много вещей:
- Как узнать, что добавить
1
к. - Как он знает, чтобы перенести «остаток» влево, затем добавить ie
009 + 1 = 010
- Для 3, как он знает, чтобы держать ноль в конце
010
, а не 10
Я пробовал много вещей, но все они неверны. Обычно мне нужно увеличивать строки:
# Result should be when str is incremented by 1
str = "002" + 1 #=> "003"
str = "0002" + 1 #=> "0003"
str = "009" + 1 #=> "010"
str = "0002" + 1 #=> "0010"
str = "02" + 1 #=> "03"
str = "1" + 1 #=> "2"
Преобразование str
в плавающее теряет нули, и я не могу успешно использовать любые логики c с "%03d"
.