如何在 C# 中创建唯一的随机字符序列?

2024-06-30

我正在我的应用程序中实现 URL 缩短功能,以便为我的用户提供可在 Twitter 中使用的更短的替代 URL。关键是要独立于提供相同服务的缩短服务,并将其作为我的网络应用程序的一项功能。

创建约 6 个字符的独特随机字符序列的最佳方法是什么?我计划将其用作数据库中具有备用 URL 的项目的索引。

Edited:

此功能将用于招聘网站,其中每个新招聘广告都会获得一个自定义 URL,其中包含标题以及要在 Twitter 中使用的较短 URL。也就是说,独特的 6 个字符组合的总数在很长一段时间内都足够了。


您真的需要“随机”,还是“唯一”就足够了?

Unique 非常简单 - 只需将 URL 插入数据库,然后将该记录的顺序 id 转换为由您选择的字符集表示的基数 n 数字。

例如,如果您只想在序列中使用 [A-Z],则可以将记录的 id 转换为基数 26 数字,其中 A=1、B=2、... Z=26。该算法是递归 div26/mod26,其中商是所需的字符,余数用于计算下一个字符。

然后,在检索 URL 时,执行逆函数,即将 26 进制数转换回十进制。执行 SELECT URL WHERE ID =decimal,就完成了!

EDIT:

private string alphabet = "abcdefghijklmnopqrstuvwxyz"; 
   // or whatever you want.  Include more characters 
   // for more combinations and shorter URLs

public string Encode(int databaseId)
{
    string encodedValue = String.Empty;

    while (databaseId > encodingBase)
    {
        int remainder;
        encodedValue += alphabet[Math.DivRem(databaseId, alphabet.Length, 
            out remainder)-1].ToString();
        databaseId = remainder;
    }
    return encodedValue;
}

public int Decode(string code)
{
    int returnValue;

    for (int thisPosition = 0; thisPosition < code.Length; thisPosition++)
    {
        char thisCharacter = code[thisPosition];

        returnValue += alphabet.IndexOf(thisCharacter) * 
            Math.Pow(alphabet.Length, code.Length - thisPosition - 1);
    }
    return returnValue;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中创建唯一的随机字符序列? 的相关文章

  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie
  • 如何在 c#.net 中将十进制转换为 ASCII?

    谁能帮助我如何使用 C net 将十进制转换为 ASCII 当我在文本框 1 中输入小数时 单击 转换 按钮后 结果将显示在文本框 2 中 我的问题是如何将十进制转换为 ASCII 的代码 这个怎么做 这是我在网上找到的一个简单的解决方案
  • 策略模式与依赖注入

    策略模式与依赖注入有何不同 即以下是您可以使用策略模式执行的操作 class Foo private readonly ISortAlgo sortAlgo public Foo ISortAlgo sortAlgo sortAlgo so
  • C++11 中的延迟初始化顺序

    考虑以下代码 分为三个编译单元 a h struct A void Register const char s const char m s 10 int m i 0 A GetA a cpp include a h include
  • ASP.NET Core处理JSON反序列化问题

    我想更改 ASP NET Core 中无效 JSON 请求处理的默认行为 我有这个模型 public class Model public Guid Id get set 当我用这个 body 发送这个请求时 Id null 它返回此错误消
  • 如何管理 JSONP 响应中的 ' ?

    我需要像这样管理 char 在我的 JSONP 请求中 通过 jquery 使用 Ajax 所以 来自 C 这就是我所做的 myText Hello I m a string myText Replace Response Write Re
  • 分段错误(核心转储)

    当我尝试运行此程序时 出现分段错误 核心转储 它编译完美 但我收到错误 我不知道为什么 我已尝试以所有可能的方式编辑我的代码 但仍然收到此错误 我已经没有主意了 任何帮助都会很棒 谢谢 unsigned short reg NULL int
  • 在 C# 中创建新 List 的这三种方式有什么区别?

    这三种创建新的方式有什么区别List
  • WPF PasswordBox 中的密码不可绑定的安全优势?

    我只是偶然发现一个事实PasswordWPF 的属性PasswordBoxes 不可绑定安全原因 这使得在 MVVM 上下文中使用它们相当麻烦 答案如https stackoverflow com a 1493330 3198247 htt
  • C++14 中专门用于数组类型的分配器?

    为什么 c 14 中没有 std allocator 的数组模板专门化 当我自己尝试专门化 std allocator 时 我在实现 Construction 和 destroy 方法时遇到了死胡同 是这个原因吗 那么为什么 std all
  • Microsoft.Graph GetAsync() 无限期挂起

    介绍 我正在开发一个 ASP NET 应用程序 除其他外 它应该从 Azure Active Directory 检索用户 为此 我使用 Microsoft Graph 版本 1 14 0 预览库 可以找到该库here https www
  • 如何在C++中从Imagemagick图像获取缓冲区

    我正在使用 ImageMagick 库进行图像处理 我需要加载 bmp 图像 将其转换为 jpeg 将其加载到缓冲区中并通过网络发送 但是 我在 ImageMagick 中找不到任何可以在缓冲区中转换和存储数据的支持函数 我只能写入文件 尝
  • 将 wav 文件存储在数组中

    我需要一种快速方法来将 wav 文件的所有样本存储在数组中 我目前正在通过播放音乐并存储来自示例提供程序的值来解决这个问题 但这不是很优雅 从 NAudio 演示中 我有带有此方法的 Audioplayer 类 private ISampl
  • 使用迭代器与索引访问向量元素有什么区别?

    使用迭代器与索引访问向量元素有什么优点 为什么迭代器比索引更好 在索引不可用的情况下 例如 std list 对于 例子 在通用函数接受迭代器的情况下 叫做 编写应该使用的函数模板时 不止一种容器类型 他们的存在是为了创造均匀性在所有容器和
  • 使用 PHP 删除字符串的前 4 个字符

    如何使用 PHP 删除字符串的前 4 个字符 你可以使用substr http php net manual en function substr php函数返回从第 5 个字符开始的子字符串 str The quick brown fox
  • Json.Net 反序列化 JSON 对象,索引为名称 [重复]

    这个问题在这里已经有答案了 我尝试使用 Json NET 从 Web 服务解析 JSON 该 Web 服务返回以下格式的数据 0 ID 193 Title Title 193 Description Description 193 Orde
  • 在文本文件中搜索字符串的更快方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 C 在一组文本文件中搜索一个大约 13 个字符的字符串 文本文件的数量正在变化 范围在 100 1000 之间 文件大小范
  • 双击 C# 中的 Windows 窗体

    如何检测哪个鼠标按钮双击了表单 即左键 右键或中键 Updated 我使用的是 NET2 0 将最后点击的按钮存储在MouseUp事件 然后在双击事件中检查该事件 示例代码 MouseButtons lastButtonUp MouseBu
  • 将 HTML 渲染为图像

    我正在基于动态输入和裁剪图像生成优惠券 并且现在使用 ntml 和 css 显示优惠券 问题是 打印这已成为一个问题 因为打印时背景如何消失以及其他问题 所以我认为最好的解决方案是能够基于html生成图像 或者设置某种接受字符串和图像的模板
  • 反序列化 jQuery 序列化表单

    我正在尝试将表单输入传递到 WebMethod 中并执行某些操作 我用了jQuery 序列化 http api jquery com serialize

随机推荐

  • unique_ptr编译错误

    如果我告诉你我无法编译它 我想这会很尴尬 请你帮我一下好吗 include
  • 如何重新运行空手道中失败的功能?

    任何人都可以帮助我重新运行空手道中失败的功能 以下是用于并行的黄瓜选项和跑步者测试 CucumberOptions features classpath features xxxxx crud api format pretty html
  • AWS Cloudformation - 如何依赖另一个嵌套堆栈中的资源

    我有一个 CF 父模板 其中包含嵌套堆栈 我想做的是在其中一个嵌套堆栈中设置 DependsOn 属性 以检查另一个嵌套堆栈中的资源 这是我的设置 父堆栈 在嵌套堆栈之间传递资源引用 RDS Type AWS CloudFormation
  • 在数组中查找对象,并使用子数组检查属性

    我有下面的数组 每个元素都有另一个名为 FunctionityChildren 的数组 我需要找到包含该属性的唯一对象行动全面等于变量 例如 budget allocation 或 budget let bigArray Functiona
  • 如何在 Wampserver 上设置和运行 Python?

    谁能帮我设置 Python 在 Wampserver 上运行 根据我到目前为止所读到的内容 您需要结合使用 Wampser Python mod pyhton 以及对 Apache http conf 文件的调整 我已经尝试过 但我相信在版
  • 奇怪的 SQL Server 视图定义

    我 继承 了一个已有 10 多年历史的应用程序 它有时确实显示出它的年龄 我今天偶然发现了一个非常奇怪的视图定义 我似乎无法理解它 你能帮助我吗 这最初是在 SQL Server 7 0 上 后来被迁移到 SQL Server 2005 但
  • 具有计数的资源的 Terraform 输出

    我的 s3 资源位于 terraform 中 配置如下 locals bucket count length var s3 config bucket names resource aws s3 bucket s3 bucket count
  • VueJS $watch $refs

    是否有可能 watch Vue refs 我想针对嵌套在当前 Vue 实例内但在ready打回来 refs childcomponent最初是undefined当它被处理时 inside ready this watch refs func
  • 使用线段树求矩形并集的面积

    我试图了解可用于计算一组轴对齐矩形的并集面积的算法 我遵循的解决方案在这里 http tryalgo org en geometry 2016 06 25 union of rectangles http tryalgo org en ge
  • WooCommerce 从所有订单中获取项目元

    我正在尝试显示 WooCommerce 插件中所有已完成订单的所有订单项目 带有项目元 我还想将显示限制为仅显示 10 个订单项目 我已经弄清楚如何显示所有订单项目 但无法将数量限制为 10 这是我当前用于显示所有订单项目的代码 args
  • 如何在 JavaScript 中编写回文

    我想知道如何在javascript中编写回文 我在其中输入不同的单词 程序显示单词是否是回文 例如 单词 noon 是回文 而 bad 则不是 先感谢您 function palindrome str var len str length
  • 创建一个每 n 轮激活的 Keras 回调

    我想在 Keras 中创建自己的回调 但不太明白如何去做 我想做的是创建一个回调n e g n 10 epochs 调用一个函数 根据 Keras 文档 https keras io callbacks https keras io cal
  • “引用透明”IO 调用的可重入缓存

    假设我们有一个 IO 操作 例如 lookupStuff InputType gt IO OutputType 这可能是一些简单的事情 例如 DNS 查找 或者针对时不变数据的某些 Web 服务调用 我们假设 该操作永远不会抛出任何异常和
  • Linux/UNIX 中 COM 编程的模拟

    组件对象模型 COM 是 或者曾经是 Windows 中提供语言中立的软件组件的方式 Linux UNIX 中是否有任何编程模型具有与通过二进制组件重用代码相同的理念 Sun RPC http en wikipedia org wiki R
  • whereHas 之后的 where 查询在 Laravel 5.4 中无法正常工作

    就我而言 我有channels与多对多关系的表类别 table 我想获取他们的频道类别包含像doing这样的动态值LIKE查询每个类别的标题 但我需要检查 a 的另一列channel通过 where 子句 这是一个channel结构 id
  • 为什么使用 jQuery 预加载图像的尝试不起作用?

    目前我有这个代码 var imgCount 36 var container 3D spin var loaded 0 function onLoad alert loaded loaded if loaded gt imgCount al
  • 开玩笑单元测试是否调用了 super()

    我有一个自定义错误类 它扩展了 Javascript 中的内置错误类 我提出的问题是 通过我的 Jest 单元测试 不会检查 super 方法是否被调用 export class AppError extends Error public
  • TextBlock 中的 C# 超链接:单击它时没有任何反应

    在我的 C 独立应用程序中 我想让用户单击一个链接来启动他们最喜欢的浏览器 System Windows Controls TextBlock text new TextBlock Run run new Run Link Text Hyp
  • 如何使 XMLUNIT 的 WithNodeFilter 动态 C#

    我正在开发一个比较 XML 文件的应用程序 用户可以输入他们想要在比较中排除的节点列表 为了进行比较 我正在使用XMLUNIT https www xmlunit org 我需要动态添加用户输入 下面的代码可以工作 但对于用户输入来说不是动
  • 如何在 C# 中创建唯一的随机字符序列?

    我正在我的应用程序中实现 URL 缩短功能 以便为我的用户提供可在 Twitter 中使用的更短的替代 URL 关键是要独立于提供相同服务的缩短服务 并将其作为我的网络应用程序的一项功能 创建约 6 个字符的独特随机字符序列的最佳方法是什么