当前位置: 首页 > 知识库问答 >
问题:

java - 如何将中文名或英文名转为数字用于排序?

戈念
2024-02-06

将中文名或英文名转数字,用于排序。

实现用户在群组中的排序,一个用户可能存在多个群组,希望用户在每个群的排序号是一样的
例如

jack  -> 75900张三  -> 66640李四  -> 54840

这个该怎么做。或者有什么其他好的方案。不希望生成的数字太长
试过转16进制、ascii,但是有转换后有字母不适合排序

共有3个答案

阮炯
2024-02-06

包含中文、英文和数字的字符串本来就可以用于排序

吕灿
2024-02-06

如果只需要排序,字符串本身也是能排序的啊…

阳狐若
2024-02-06

将中文名或英文名转为数字用于排序,可以采用一种混合的方法,结合了拼音和特定的映射关系。这个方案可以将名字转换为相对较短的数字,同时保证了排序的准确性。

一种可能的方案如下:

  1. 将中文名字或英文名字转换成拼音。
  2. 对拼音的每个字母,使用一个映射关系将其转换为对应的数字。例如,可以将A映射为1,B映射为2,依此类推,直到Z映射为26。如果名字中包含非字母字符,可以忽略它们。
  3. 将转换后的数字拼接在一起,形成一个长数字。
  4. 可以选择去掉数字的末尾零,以缩短数字的长度。

例如,对于名字"jack",其英文拼音为"ja", "ck"。将这些字母转换为数字得到"10", "2", "10",拼接在一起得到数字"10210"。对于中文名字"张三",其拼音为"zhang", "san"。将这些字母转换为数字得到"74", "8", "10",拼接在一起得到数字"74810"。

这种方案的优点是简单易行,且生成的数字相对较短。但需要注意的是,这种方案依赖于拼音和映射关系的准确性,如果名字中包含特殊字符或非标准字母,可能需要进行额外的处理。此外,如果需要处理大量的名字,可能需要考虑性能和效率的问题。

 类似资料:
  • 问题内容: 在MySql的解释器中,很容易将表及其字段名称转储到屏幕上。 似乎有没有简单的方法表导出到制表delimted或CSV OUTFILE 包括 其列标题。 我试图仅使用SQL或Linux命令行来执行此操作,而不用另一种语言编写程序。 谢谢 问题答案: 将查询传递到命令行客户端会输出一个制表符分隔的列表,其中列名作为第一行

  • 问题内容: 问题是,正如您所知道的,Unicode图表中有成千上万个字符,我想将所有类似的字符转换为英文字母。 例如,这里有一些转换: 我发现字母A / a有20多个版本。而且我不知道如何对它们进行分类。它们看起来像大海捞针。 Unicode字符的完整列表位于http://www.ssec.wisc.edu/~tomw/java/unicode.html 或http://unicode.org/c

  • 问题内容: 如何将类路径上的文件名转换为真实文件名? 例如,假设目录位于您的类路径中。该目录中有一个文件,例如。 仅给出字符串,如何确定(运行时)info.properties文件的绝对文件路径? 结果将是类似。 为什么这有用?编写单元测试时,您可能想访问捆绑在测试资源()中的文件,但正在使用需要真实文件名而不是相对类路径引用的第三方库或其他系统。 注意:我已经亲自回答了这个问题,因为我觉得这是一

  • 问题内容: 在WeasyPrint的公共API中,我接受HTML输入的文件名(除其他类型外)。任何与内置文件一起使用的文件名都可以使用,但是我需要将其转换为方案中的URL,然后再将其传递给。 (所有内容在内部都是URL形式。我需要为文档提供一个“基本URL”,以便使用来解析相对URL引用。) urllib.pathname2url是一个开始: 将路径名路径从路径的本地语法转换为URL的路径组件中使

  • 问题内容: 我有一个包含几个文件的目录,其中许多文件具有非英语名称。我在Windows 7中使用PHP。 我想使用PHP列出文件名及其内容。 目前,我正在使用和。这适用于英文文件名,但不适用于非英文(中文)文件名。 例如,我的文件名如“ए로औरप्रोब्लेम。eml”,“ hello鶨鹙鵨鶣鎹蓥.eml”。 无法使用获取文件名 即使我在其参数中硬编码文件名,也无法打开。 我该怎么做? 问题答案

  • 我一直在网络和java教程中寻找这一点。但我没有澄清如何为文档生成数字签名。java教程对此进行了解释,但我真正想要的是 用户附带一个文件和一个字符串密钥 使用该密钥,文件被数字签名 相应的公钥,该标志与该文档一起发布 那么,如何转换给定的String私钥来做到这一点。在尝试java教程和web中给出的示例(带有将字节从字符串而不是文件中放置的一些变体)时,我遇到了如下异常