📖 功能概述
输入一组文本信息作为排序依据,内置的 TextSorter 引擎将文本按字母/数字/混合等多种语义规则排序,
并输出排序后的文本列表以及每个条目在原列表中的索引映射。
额外的数据流可以通过动态端口输入——端口会自动根据排序结果重新排列数据,
使所有数据列与排序后的文本信息保持同步对齐。
核心思想:相当于 Excel 中的"按某一列排序,关联列同步重排"——
文本信息是"排序列",其余数据列是"关联列"。
🧠 核心算法:TextSorter 智能排序
排序处理流程
Step 1 — 文本排序:
调用 TextSorter.SortWithFullInfo(infos, true, false, true) 对文本列表排序
参数说明:区分大小写=False,倒序=False,自然排序=True
返回:(resultinfos, listIndices)
• resultinfos:排序后的文本列表
• listIndices:排序后每一项在原列表中的索引(重映射表)
Step 2 — 数据重排:
对每个额外的数据流(从第 3 端口起):
读取原始数据列表
按 listIndices 逐个取元素 list[listIndices[i]]
输出重排后的数据列表
文本排序规则(默认:自然排序)
自然排序(Natural Sort):识别文本中的数字部分并按数值排序
例:{"A2", "A10", "A1"} → {"A1", "A2", "A10"}
(字符串排序会得到 {"A1", "A10", "A2"},自然排序正确处理了数字)
大小写:不区分大小写(true → 忽略大小写差异)
方向:正序(false → 不反向)
📋 使用示例
输入信息(S):{"B2", "A10", "A1", "B1"}
排序处理(自然排序):
原索引 {0:B2, 1:A10, 2:A1, 3:B1}
排序后:{A1, A10, B1, B2}
索引映射 listIndices = [2, 1, 3, 0]
输出信息(S):{"A1", "A10", "B1", "B2"}
输出序号(i):{2, 1, 3, 0}
额外数据流 D1(如长度):{300, 100, 200, 400}
重排后:listIndices 映射 → list[2]=200, list[1]=100, list[3]=400, list[0]=300
输出 D1:{200, 100, 400, 300}