【问题标题】:Is there a simple way to generate a un-duplicate string?有没有一种简单的方法来生成不重复的字符串?
【发布时间】:2012-01-21 15:48:00
【问题描述】:

我知道我可以使用 GUID 生成唯一的字符串,但它太长了。 现在我只需要在网站内生成不重复的字符串,我该怎么办?谢谢!

例如:在网站http://mathurl.com/,你可以生成一个永久的URL,比如http://mathurl.com/75ujy7b,而75ujy7b很短,不重复。

【问题讨论】:

  • 数字可以是“不重复的”。以 36 为基数的数字也可以。它们也是增量的,因此很容易生成 ;)
  • @Paul 您可能还想告诉我们您使用的是什么语言,c#、vb.net 等。

标签: asp.net


【解决方案1】:

您可以使用足够长的随机数.. 比如说 10,000 到 99,999..

如果这对你来说不够好,你可以研究一些散列算法..我认为..

【讨论】:

  • 仅仅因为您使用随机数并不能阻止数字被重复。 (你可以并且最终会得到一个随机数生成一个已经被使用过的数字)
【解决方案2】:

首先,您可以从一个计数器开始,确保使用 Mutex/lock 返回唯一的增量数字,然后将最后一个数字保存在您网站的某个位置,可能在 web.config 中,可能在数据库中,或者在文件。

然后您将此唯一数字转换为不同的基数,例如转换为 base-64。这是一些代码,以及有关如何执行此操作的模式详细信息

https://stackoverflow.com/a/5901201/159270

你可以得到类似的结果

value: 0 encoded: A
value: 1 encoded: B
value: 9999999999 encoded: SrYsNt
value: 4294965286 encoded: ZNGEvT
value: 2292964213 encoded: rHd24J
value: 1000000000 encoded: TrNVzD

现在,如果你在字符上打乱地图,你也可以制作一个不太容易找到的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2011-01-28
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多