我喜欢使用DateTime.UtcNow.ToString("yyyyMMddHHmmss")
作为一个唯一的足够的盐来填充,而不是测试中的随机字符串或GUID,以便于调试和排序。但是,我无法使用它,验证只允许使用字母字符串,例如一个名称(其中' Falsehoods Programmers Believe About Names'被忽略)。
是否有将时间戳编码为[A-Z] +字符串的标准或约定?最好是比罗马数字更有效但仍然人类可读的东西,即不是类似base64的查找表变体,而是基于逻辑的变体。
答案 0 :(得分:1)
我不知道,但如果您将A
视为0
而将J
视为9
,则可以简单地替换yyyyMMddHHmmss
字符串中的所有数字。
答案 1 :(得分:1)
我最终使用leet speak和calculator spelling的混合进行查找,以便进行排序以代替可读性。
var map = new Dictionary<char, char>
{
{ '0', 'O' },
{ '1', 'I' },
{ '2', 'Z' },
{ '3', 'E' },
{ '4', 'A' },
{ '5', 'S' },
{ '6', 'G' },
{ '7', 'T' },
{ '8', 'B' },
{ '9', 'P' }
};
return string.Concat(value.Select(c => map[c]));