STEAM“库”页面。自定义收藏名称顺序测试记录分享
审判星灬弑殇
2026年08月27日 01:37
steam平台

前言:由于STEAM的库页面,可以把游戏按自己的喜欢创建收藏夹来分类。

但是由此引出一个新问题,创建的收藏夹不允许自定义排序。STEAM似乎有一套排序规则。但是我找不到相关文章。借助AI搜索也找不到相关的描述。(可能有官方的文献资料库但是我没找到)

网络上有一些UP主做过相关视频。但是都是简单的介绍了下如何使用空格来调整排序。例如:@小狸子切切里​的这个视频:

虽然这个方法做到了调整排序的目的,但是还是不知道STEAM的收藏夹排序顺序是怎么样的。

目前确定的就是按名称来排序。而非创建时间、修改时间、内部 ID、最近使用等其他规则。

懒得看过程的建议直接跳到末尾看最终的排序结论。

浏览器观看的话左边有目录。手机APP观看的话。右下角有目录浮窗。

注意:我可能会有遗漏某些我没想到的东西。欢迎评论区提醒。

注意2:本文内容深度依赖AI来辅助我进行黑盒测试、总结。

正式来测试一下优先级。

一:先测试数字怎么排。

创建以下名称收藏夹:1、2、10、01、001。实测排序顺序如下图:

二:测试是否区分大小写

创建以下名称收藏夹:a、A、b、B、c、C。实测STEAM强制显示为大写,无法进行大小写区分。创建名为A的收藏夹后,再创建名为a的收藏夹显示为:

三:测试“符号”在排序中的位置

先创建以下名称收藏夹:!a、#a、-a、_a、~a。实测排序顺序如下图:(前面的数字测试没删)

四:测试更多符号

符号似乎有特殊的排序,测试多几个符号:$a、%a、&a、*a、(a、)a。得到顺序如图:(展开的收藏夹为本次插入的符号)

五:再次测试更多符号

再次创建以下名称收藏夹:+a、=a、[a、]a。新插入的收藏夹位置如下图:

六:再次测试是否有符号能否在#符号前面

再次测试以下符号:@a、^a、{a、}a、|a。新插入的符号位置顺序如下:

七:测试空格和.符号

其中创建 A时,提示:已存在。

创建.A。位置顺序在此:

插入一下当前完整的列表顺序:

#A、*A、001、01、1、10、2、!A、$A、%A、&A、(A、)A、+A、-A、.A、=A、@A、[A、]A、^A、_A、A、{A、|A、}A、~A

八:接下来测试英文。

创建B、C、T、Z。他们的顺序是:

九:测试双英文

创建AA、AB、BB、BC、EF、TH、TZ。,得到的顺序是:

十:测试英文单词和冠词

创建:Apple、The Apple、Banana、A Banana、Orange、An Orange、Cat、The Cat。得到结果如下:(分2张图)

十一:接下来测试中文。

创建:阿、波、吃、得、鹅、飞、一、二。得到顺序如下:

目前为止的测试名称条目排序:

#A、*A、001、01、1、10、2、!A、$A、%A、&A、(A、)A、+A、-A、.A、=A、@A、[A、]A、^A、_A、A、A BANANA、AA、AB、AN ORANGE、APPLE、B、BANANA、BB、BC、C、CAT、EF、ORANGE、T、TH、THE APPLE、THE CAT、TZ、Z、{A、|A、}A、~A、一、二、吃、得、波、阿、飞、鹅。

目前为止的整体排序规律总结:

STEAM的名称排序规律基本可以概括为:

字母、数字、中文:都按 Unicode 码点进行字典序排序。

符号:似乎有自定义的权重,# 最靠前,* 第二,但 ! 排到了数字后面,不符合标准码点顺序。

不区分大小写,且疑似会忽略前导空格。

不会忽略 The、A、An 等冠词,整个名称作为字符串比较。

多字符名称:按逐字符字典序比较,与数字、英文字母规律一致。

十二:验证“字母和数字混合”是否也严格按码点逐字符比较

创建:A1、A2、A10、B1、1A、2A、10A。得到顺序分别如下:

十三:再次验证字母与数字混合

创建:Q0、Q00、Q01、Q1、Q10、Q2、Q9、Q90。得到的顺序如下:

十四:测试空格和其他符号、数字的相对顺序

创建:R A、R1、R.A、R-A,得到的顺序如下:

十五:怀疑在逐字符比较时,第二位字符的权重顺序是:空格 < 连字符 < 点号 < 数字。现在准备测试空格和 # 谁更靠前,以及中文后面再跟其他字符时是否仍然按 Unicode 码点逐字符比较。

创建:S A、S#A、S*A、S1A、S!A、S-A、S.A、SA、S一、S波、S阿。得到的顺序如下:(分俩图)

再次中途总结:

STEAM的名称排序规则可以总结为以下几点:

1. 整体:逐字符字典序比较

软件将名称视为字符串,从左到右逐个字符比较,直到分出先后。

如果前面字符完全相同,较短的字符串排在前面。

例如:

A → AA → AB,1 → 10 → 10A。

2. 首字符有特殊优先级

名称第一个字符的排序权重并不是完全按 ASCII/Unicode 码点,而是分成了几个优先级组(从高到低):

① 特殊置顶符号:# 和 *

# 排在最前,其次是 *。

这两个符号在名称开头时会被“特殊提升”,远高于其他所有字符。

例如:#A、*A 在所有数字、字母、符号之前。

② 数字 0-9

以数字开头的名称整体排在 #、* 之后,但排在普通符号(如 !、$)之前。

数字之间按字符 '0' 到 '9' 的字典序,不是按数值大小。

例如:001 → 01 → 1 → 10 → 2。

③ 普通符号(除 #、* 外)

排在数字之后。

这些符号之间大致按 ASCII 码顺序排列:

!、$、%、&、(、)、+、-、.、=、@、[、]、^、_、{、|、}、~。

注意:# 和 * 虽然在 ASCII 中也属于符号,但在开头位置被特殊提前;在非开头位置则恢复正常顺序(见下文)。

④ 英文字母

排在普通符号之后。

不区分大小写,统一按 A-Z 顺序。

例如:A、AA、AB、B、C……Z。

⑤ 中文等 Unicode 字符

排在英文字母之后。

中文按 Unicode 码点 排序,与拼音、笔画无关。

例如:一(U+4E00) → 二(U+4E8C) → 吃(U+5403) → 得(U+5F97) → 波(U+6CE2) → 阿(U+963F) → 飞(U+98DE) → 鹅(U+9E45)。

3. 非首字符按标准 ASCII/Unicode 顺序

从第二个字符开始,排序严格按字符编码顺序(ASCII/Unicode),且不再有特殊符号提升。

例如在 S 开头的名称中,第二个字符的顺序是:

空格 → ! → # → * → - → . → 数字 1 → 字母 A → 中文。

也就是说,# 和 * 只有在作为第一个字符时才被特殊处理,在中间位置时它们恢复正常顺序(! 在 # 前)。

4. 空格的处理

前导空格会被忽略:创建 a 时软件将其视为 a。

中间空格有效,且权重最低,排在所有可见符号之前。

例如:A BANANA 排在 A1 之前,R A 排在 R-A 之前。

5. 不忽略冠词

软件不会忽略名称开头的 The、A、An。

The Apple 会按字母顺序排在 T 区域,而不是被当作 Apple 排序。

十六:验证@小狸子切切里​视频中提到的空格字符影响排序的特殊。

创建FPS、LINK、GAME。得到的顺序为:

可以看到GAME在中间,3个新创建的都在EF和ORANGE之间。

对其GAME删除。重新创建“空格+GAME”得到的顺序依旧是如上图,并未变动。

对其GAME进行“鼠标右键-重命名收藏”在如下图处发现STEAM忽略了创建收藏时开头的“空格”。

现在在重命名收藏处增加一个空格。如下图:

得到的顺序变化:

似乎是在创建的时候会默认忽略开头的空格。但是如果自定义的收藏夹进行“鼠标右键-重命名”。在重命名中的GAME前面加入一个空格,虽然软件显示的名称依旧是GAME。但是GAME这个的排序却变到了2A和!A之间。

怀疑结论:

新建收藏夹时:

STEAM会自动修剪掉开头的空格,所以输入“空格 + GAME”,实际存储的名称是 GAME,没有空格。因此排序和原来的 GAME 完全一样。

重命名时:

软件似乎没有进行修剪,或者修剪逻辑不同。在重命名时输入了“空格 + GAME”,它实际上把前导空格存进了名称里。虽然界面上显示时把前导空格隐藏了(看起来还是 GAME),但内部排序使用的字符串是 " GAME"(前面带一个空格)。

排序时:

" GAME" 的第一个字符是空格,而不是字母 G,所以它不会排在字母区域,而是排到了数字组之后、普通符号组之前的位置。导致看到的列表,它位于 2A 和 !A 之间,正好符合之前对首字符分组的推断:数字组(2A 属于数字开头)结束之后,是普通符号组。普通符号组内部按 ASCII 顺序,“空格”(ASCII 0x20)比“!”(0x21)小,所以 " GAME" 排在 !A 前面。

更新后的排序规则总结。

首字符分组优先级(从高到低):

# 和 *(特殊置顶,仅在首字符位置被提升)

数字 0-9

普通符号组【 !"$%&'()+,-./:;<=>?@[]^_`{|}~】不包含【】!号前面有空格

英文字母(不区分大小写)

中文等 Unicode 字符(按 Unicode 码点)

从第二个字符开始:

完全按 ASCII/Unicode 码点逐字符比较。

前导空格:

新建时通常会被自动去除,无法保留。

重命名时可能保留,但显示时会隐藏,排序时会参与,造成“显示名称没变但排序变了”的现象。

如果加了前导空格,名称会从原来的位置跳到数字之后、普通符号之前。

十七:研究不可见字符

由于测试排序多次,不贴图片了。结果如下:

制表符U+0009【比空格 (U+0020) 更靠前】

空格U+0020【已知位置:数字组之后,普通符号组最前】

零宽空格U+200B【码点较大,排在了“~A”和中文“一”之间。】

十八:研究EMOJI

创建一下EMOJI。为了方便观察。均在后面加入55555:

Emoji/Unicode 码点

→/U+2192 ❤️/U+2764 ☀️/U+2600 😀/U+1F600 🐶/U+1F436 🍎/U+1F34E 👍/U+1F44D 🎌/U+1F38C

得到的顺序如下:

这时发现STEAM对首字符的分组优先级中,

Emoji / 表情符号组:位于数字组之后、普通 ASCII 符号组之前。

十九:测试是否还有被提升为置顶的普通 ASCII 符号

为防止还有遗漏的被置顶的普通 ASCII 符号。我将缺失的11个【" ' , / : ; < > ? \ `】也加入测试。每个符号后面均带上X用于方便观察。得到的顺序如下图:

第二次整理目前的测试条目名称顺序:

#A、*A、001、01、1、10、10A、1A、2、2A、→55555、☀️55555、❤️55555、🍎55555、🎌55555、🐶55555、👍55555、😀55555、!A、"X、$A、%A、&A、'X、(A、)A、+A、,X、-A、.A、/X、:X、;X、<X、=A、>X、?X、@A、[A、\X、]A、^A、_A、`X、A、A BANANA、A1、A10、A2、AA、AB、AN ORANGE、APPLE、B、B1、BANANA、BB、BC、C、CAT、EF、FPS、GAME、LINK、ORANGE、Q0、Q00、Q01、Q1、Q10、Q2、Q9、Q90、R A、R-A、R.A、R1、S A、S!A、S#A、S*A、S-A、S.A、S1A、SA、S一、S波、S阿、T、TH、THE APPLE、THE CAT、TZ、Z、{A、|A、}A、~A、一、二、吃、得、波、阿、飞、鹅。

共计:106个条目。根据目前的情况。可以分为以下6个组别:特殊置顶符号、数字、Emoji / 表情符号、普通 ASCII 符号、英文字母、中文等非 ASCII 字符。

二十:验证每个组别中的最小和最大。

置顶组的符号不管。EMOJI组由于各种版本的EMOJI最大码点不一样。不是很好测,就直接跳过。普通 ASCII 符号组已经将所有的符号全部测试了。英文字母组别中最大的A和Z在上面的条目中已经存在。剩下的其他组别中(数字和中文),根据分析出来的组内排序规则,补充测试最小的和最大的。验证一下他们的位置是否准确。

数字组别中,最小为0,最大是9。插入后的顺序为:

中文测试了BMP常用区最小Unicode码点U+4E00【一】和BMP常用区最大Unicode码点U+9FA5【龥】。插入后的顺序为:

至此,测试完毕。分析的最终排序结论:

一:首字符决定大组,组间有严格优先级 从高到低依次为:

1、特殊置顶符号【#、*】,#​ 先于 *。

2、数字【0-9】,按字符 '0' 到 '9' 字典序。

3、Emoji / 表情符号。所有 Emoji,按 Unicode 码点升序。

4、普通 ASCII 符号【如 !、"、$、%、&、'、(、)、+、,、-、.、/、:、;、<、=、>、?、@、[、\、]、、_、`、{、|、}、】,按 ASCII 码点升序。

5、英文字母【A-Z】,不区分大小写。

6、中文等非 ASCII 字符【如汉字、零宽空格等】,按 Unicode 码点升序

注意:{、|、}、 虽然属于普通 ASCII 符号,但它们的码点大于 Z,所以实际排在 Z 之后、中文之前。更准确地说:首字符按大组排序,其中数字和 Emoji 被提升,# 和 * 被额外置顶;普通符号中码点小于 A 的排在字母前,码点大于 Z 的排在字母后。

注意修正:普通 ASCII 符号本身并没有被STEAM做二次拆分分组。普通 ASCII 符号的字符码点本身就存在区间:

ASCII码:【!】(33)‑【`】(96) 小于【A】(65)‑【Z】(90),这部分符号落在字母【A】(65)之前;

ASCII码: 【{】(123)、【|】(124)、【}】(125)、【~】(126) 码点大于【Z】(90),自然排序落在全部大写字母之后。

STEAM没有对普通符号与英文做 “拆成两部分” 的逻辑,纯粹是ASCII码本身的数值造成的分布结果。

二:组内排序规则

数字组:按字符 '0' 到 '9' 的升序,即字典序,不是数值大小。 例:0 < 001 < 01 < 1 < 10 < 2 < 9

Emoji 组:按 Unicode 码点升序。 例:→(U+2192) < ☀️(U+2600) < ❤️(U+2764) < 🍎(U+1F34E) < 😀(U+1F600)

普通 ASCII 符号组:按 ASCII 码点升序。 例:

代码块
PlainText
自动换行
复制代码
空格 (U+0020)
! (U+0021)
" (U+0022)
# (U+0023)
$ (U+0024)
% (U+0025)
& (U+0026)
' (U+0027)
( (U+0028)
) (U+0029)
* (U+002A)
+ (U+002B)
, (U+002C)
- (U+002D)
. (U+002E)
/ (U+002F)
: (U+003A)
; (U+003B)
< (U+003C)
= (U+003D)
> (U+003E)
? (U+003F)
@ (U+0040)
[ (U+005B)
\ (U+005C)
] (U+005D)
^ (U+005E)
_ (U+005F)
` (U+0060)
{ (U+007B)
| (U+007C)
} (U+007D)
~ (U+007E)
复制成功

英文字母组:不区分大小写,按 A 到 Z 顺序。 例:A < AA < AB < B < … < Z

中文等非 ASCII 字符组:按 Unicode 码点升序,与拼音、笔画无关。 例:一(U+4E00) < 二(U+4E8C) < 吃(U+5403) < … < 鹅(U+9E45) < 龥(U+9FA5)

三:多字符名称的比较规则

如果首字符相同,则从第二个字符开始,完全按 Unicode 码点(或 ASCII 码点)逐字符比较,不再有 #、* 的特殊提升,数字和 Emoji 也恢复正常码点顺序。

例如:

A1 < A10 < A2

10A < 1A

S!A < S#A < SA(说明:#、 在非首字符位置按正常码点排序)

R A < R-A < R.A < R1

四:空格与不可见字符的特殊性

新建条目:前导空格、制表符等会被自动去除,无法保留。

重命名条目:可以保留前导空格、制表符等,界面显示时可能隐藏,但排序时参与。

前导空格、制表符属于普通符号组,且按码点越小越靠前。

制表符 【U+0009】 < 空格 【U+0020】 < ! 【U+0021】

零宽空格 【U+200B】 属于非 ASCII 字符组,排在 之后、中文之前。

无关的题外话:

为了做测试,最终弄了109个STEAM收藏夹分类。

话说一个游戏居然可以放N多的收藏夹。

这样的话,哪怕你STEAM库里面只有5个游戏,也能通过组N多收藏夹的方式搞的好像库里面有很多游戏一样。

然后在到STEAM的编辑个人资料-隐私设置中。把游戏详情设置为私密。

就可以“自欺欺人”了。[doge]