Power Query中Text.PadStart实现版本号比较的动态写法优化
Power Query 动态版本号补零拼接实现方案
你当前硬编码逐行拼接Installed.#分段的逻辑可以完全替换为动态列表遍历方案,无需根据分段数量手动修改代码,适配任意动态增减的分段数。
替换方案
你现有代码中从步骤开始到PadLength = MaxLengthColumn[MaxLength],的部分完全不需要改动,只需要把最后硬编码的Installed_Version步骤替换为以下代码即可:
Installed_Version = Table.AddColumn(ReplacedImageNull, "Installed_Version", each let PaddedSegments = List.Transform(List.Positions(InstalledList), (idx) => Text.PadStart(Record.Field(_, InstalledList{idx}), PadLength{idx}, "0") ) in Text.Combine(PaddedSegments, ".") ),
实现逻辑说明
List.Positions(InstalledList)会自动根据动态生成的InstalledList长度,生成从0开始的连续索引序列,和PadLength的索引一一对应,天然满足Installed.1对应PadLength{0}、Installed.2对应PadLength{1}的映射规则Record.Field(_, InstalledList{idx})会动态读取当前行指定索引位置的Installed.#列值,不需要硬编码列名- 所有分段完成补零后,通过
Text.Combine直接用.拼接为完整版本号,自动适配任意分段数量 - 由于
InstalledList和PadLength都是基于最大分段数动态生成的,两者长度完全一致,不会出现索引越界问题
如果后续需要对Image列做同样的补零拼接,只需要把代码中InstalledList替换为之前生成的ImageList即可,逻辑完全通用。
内容的提问来源于stack exchange,提问作者Neiners
相关产品推荐
相关产品推荐

