【问题标题】:How to create unique slugs from unique integers?如何从唯一整数创建唯一的 slug?
【发布时间】:2023-02-25 02:55:41
【问题描述】:

我有一个实体表,每个实体都有一个 ID 标识列,它是一个简单的递增整数,保证每个实体都是唯一的。我如何从这些身份整数创建相对较短(最好是 10 个字符或更少)的 slug,以便每个整数都应映射到集合 [a-z][0-9] 中一个独特的随机字符系列?换句话说,从技术上讲,创建作为实体的字符串表示的 slug 是微不足道的:/foobar/1/foobar/2 等。但是如何基于这些看起来更像 /foobar/34a4804bc9 的身份整数来创建 slug, /foobar/291e407998等?

【问题讨论】:

  • 你只是想随机生成一堆数字和字母吗?
  • 这看起来是使用hashids.org 的好案例。

标签: c# function url slug


【解决方案1】:
        int id = 0;
        Random r = new Random(id);
        char[] chars = "abcdefghijklmnopqrstuvwxyz1234567890".ToCharArray();
        string output = "";
        for (int i = 0; i < 10; i++)
        {
            output += chars[r.Next(chars.Length)];
        }

        Console.WriteLine(output);

可能是最简单的方法。用他们的唯一编号替换 ID,它充当种子。

【讨论】:

  • 这并不能保证唯一性。我想要一个函数来保证如果两个 ID 不同,则两个 slug 也会不同。否则需要额外的数据库检查。
  • 它使用 ID 作为种子,因此它很可能会有所不同。
猜你喜欢
  • 2020-09-27
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多