string "chunk" 有没有名字的理由?
Is there a name for string "chunk" justification?
我最近正在实现以下算法(为清楚起见而编写;有很多方法可以更紧凑地编写它):
tmp = str.length % blocksize
if (tmp == 0)
tmp = blocksize
tmp = blocksize - tmp
str.append(padchar * tmp)
它确保字符串 str
是 blocksize
的倍数,必要时用 padchar
填充。我发现自己经常实现它,今天我又实现了它,并意识到它必须足够普遍才能有一个合适的名称或出现在一些公共库中,但我从未见过或听说过它。这个例子是左对齐的,但我可以想象一个类似的右变体。我在谷歌上搜索 "chunk justification" 或 "block justification" 的尝试一无所获。这不是标准的左对齐或右对齐,因为我见过的所有 api 都是固定长度,而这是半可变长度。
那么,我的两个问题:
- 这个有更正式的名字吗?
- 该算法是否在任何语言标准库或通用实用程序中实现?
(请注意,虽然我在这个问题中使用了字符串,但该算法同样适用于,而且我对通用 lists/arrays 的答案同样感兴趣)
示例输出:
> 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"
不确定单个名称,但涉及两个操作:
填充(leftpad、rightpad 等 - 参见 How can I pad a String in Java?)
将长度四舍五入到下一个倍数
我将组合操作称为“将字符串填充到下一个倍数”,这很直观,但不是'proper'名称。
顺便说一句,这个 combined operation is used extensively in cryptography, where it is simply called 'padding'。
我最近正在实现以下算法(为清楚起见而编写;有很多方法可以更紧凑地编写它):
tmp = str.length % blocksize
if (tmp == 0)
tmp = blocksize
tmp = blocksize - tmp
str.append(padchar * tmp)
它确保字符串 str
是 blocksize
的倍数,必要时用 padchar
填充。我发现自己经常实现它,今天我又实现了它,并意识到它必须足够普遍才能有一个合适的名称或出现在一些公共库中,但我从未见过或听说过它。这个例子是左对齐的,但我可以想象一个类似的右变体。我在谷歌上搜索 "chunk justification" 或 "block justification" 的尝试一无所获。这不是标准的左对齐或右对齐,因为我见过的所有 api 都是固定长度,而这是半可变长度。
那么,我的两个问题:
- 这个有更正式的名字吗?
- 该算法是否在任何语言标准库或通用实用程序中实现?
(请注意,虽然我在这个问题中使用了字符串,但该算法同样适用于,而且我对通用 lists/arrays 的答案同样感兴趣)
示例输出:
> 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"
不确定单个名称,但涉及两个操作:
填充(leftpad、rightpad 等 - 参见 How can I pad a String in Java?)
将长度四舍五入到下一个倍数
我将组合操作称为“将字符串填充到下一个倍数”,这很直观,但不是'proper'名称。
顺便说一句,这个 combined operation is used extensively in cryptography, where it is simply called 'padding'。