这里假设所讨论的语言是英语,并且使用的字符集是基本的ASCII /拉丁字母。
生成“短网址”时,首先要考虑使用大型“代码集”/字母表将整数(可能是引用数据库中长网址的ID)转换为高“基数”(URL-友好的Base-64,例如)。在我的具体情况下,我首先选择标准化为Base-36(数字,拉丁字母,不区分大小写)。
然而,仔细观察后,人们可能会发现他们的短网址生成器最终会吐出顽皮的单词或其他常见的单词,这可能是非常不受欢迎的。
避免生成“真实单词”的一个选择就是去掉所有常见的元音。
是否有其他/更好的解决方法不会牺牲太多的空间?
答案 0 :(得分:2)
我认为你在这里剥离元音的想法将是你最好的。
其他任何东西,如黑名单,字典查找等,都会非常繁琐,需要大量的维护,最终还是可以实现。
答案 1 :(得分:1)
您可以标准化为基数为30 [0-9bcdfghj-np-tvwxz]
,这将永远不会生成元音,因此不会生成真正的单词。
答案 2 :(得分:0)
你可以分开你的元音和辅音(xxxddd_eeeaaa)。如果它总是长于三个字母,你可能会用诅咒词来安全。
或者你可以随机插入数字。
或者你可以创建一个过滤器。
这三个人我可能会坚持第一个。
答案 3 :(得分:-1)
为了牺牲每个数字的少量信息,但同时尽量避免意义,你应该忽略most frequent letters in english。这比简单地跳过所有元音都略高效。