简单的哈希函数,对HTML id友好,区分大小写

Simple hashing function that is HTML id-friendly and case sensitive

本文关键字:友好 大小写 id 哈希 函数 简单 HTML      更新时间:2023-09-26

我从外部源获取一些字符串,并在页面上的span中显示它们。

我需要一种使用document.getElementById()或jQuery的$("#XXXX")返回这些字符串的方法,所以在每个字符串中,我都会得到某种标识符,并将该标识符用作span的ID。

问题是,我得到的标识符可能包含像+这样的字符。不允许将其作为id属性的值http://www.w3schools.com/tags/att_standard_id.asp此外,这些标识符区分大小写。所以我想到了使用像SHA或MD5这样的哈希函数,对我得到的标识符进行哈希,然后将它们用作跨度的id,我可以再次应用哈希函数来查找我的元素。

对于这样一个简单的功能来说,这似乎很复杂。有更好的方法吗?或者可能是一个非常简单的散列函数,可以保证id友好的字符和大小写敏感性?(HTML的id不区分大小写,这是考虑哈希函数的另一个原因)

你能放弃你得到的标识符,只实现像这样简单的东西吗:

var counter = 0;
function uniqueId(){
    return "Id" + ++counter;
}

您可以用一个数字和某种字符串来增加id。

span id为"a1"、"a2"等。

我猜问题是你以后会想你会得到相同的字符串,并希望以相同的方式转换它们,然后使用它们来找到原始的对应元素?

如果是这样的话,你只需要小心地清洗你的琴弦。一系列正则表达式可以帮助您从无效字符映射到有效字符,并使大写字母唯一。例如,可以将"A"转换为"-a-",将"+"转换为"-plus-"

一个精心选择的方案应该保证碰撞的可能性(即有人给你一个看起来像另一个字符串的转义版本的字符串)应该很小,并且在任何情况下都可以立即检测到。