Недавно я реализовывал следующий алгоритм (написанный для ясности; есть много способов записать его более компактно):
tmp = str.length % blocksize
if (tmp == 0)
tmp = blocksize
tmp = blocksize - tmp
str.append(padchar * tmp)
Из него следует, что строка str
кратна blocksize
,заполнение padchar
при необходимости.Я обнаружил, что реализую это достаточно часто, что сегодня я реализовал это снова и понял, что оно должно быть достаточно распространенным, чтобы иметь собственное имя или быть в некоторых общих библиотеках, но я никогда не видел и не слышал об этом.Этот пример выровнен по левому краю, но я мог бы представить аналогичный правый вариант.Мои попытки прибегнуть к «оправданию чанка» или «оправданию блока» ничего не дали.Это не стандартное левое или правое оправдание, так как все API-интерфейсы для тех, что я видел, имеют фиксированную длину, тогда как это переменная длина.
Итак, два моих вопроса:
- Имеет ли это более формальное имя?
- Реализован ли этот алгоритм в какой-либо стандартной языковой библиотеке или общих утилитах?
(обратите внимание, что хотя я использовал строки в этомвопрос, алгоритм работает так же хорошо, и меня так же интересуют ответы для общих списков / массивов)
Пример вывода:
> thisalgo(str="hey!", blocksize=5, padchar='0')
"hey!0"
> thisalgo(str="hello", blocksize=5, padchar='0')
"hello"
> thisalgo(str="hello!", blocksize=5, padchar='0')
"hello!0000"