如何从列中的字符串中删除最后 X 个字符?
我正在尝试生成用户友好的文件名列表,这些文件名用于生成 Power Query 表。 然而,当阅读 m 个文本命令的列表时,我没有看到一个简单的方法来执行相当于:
Text.left(#"previous table"{"Filename'}, Text.length(#"previous table"{"Filename'} - 11)
(基于我对 Excel 的了解)。
因为我看到我的文件名的长度是可变的,但知道我总是想消除最后 11 个字符,我想也许我可以使用
Text.reverse(#"previous table"{"Filename'})
,然后在位置 11 处进行分割,只保留分割的右侧,然后再做一次逆转。 然而,我还不太了解 m 语法,当我尝试这样做时,我得到的只是一个错误Text.Reverse
我的m代码:
let
Source = Forecasting,
#"Removed Other Columns" = Table.SelectColumns(Source,{"Source.Name"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"),
#"Renamed Columns" = Table.RenameColumns(#"Removed Duplicates",{{"Source.Name", "Submitted Reports"}}),
Custom1 = Text.Reverse(#"Renamed Columns"{{"Submitted Reports"}})
in
Custom1
进入“重命名列”步骤时的示例数据:
Submitted Reports
Bug Bunny 241008923443.xlsm
Daffy Duck 241130234521.xlsm
Wyle E. Cayote 240909124312.xlsm
期望的结果:
Submitted Reports
Bug Bunny 241008
Daffy Duck 241130
Wyle E. Cayote 240909
如果您想删除最后五个字符并知道它们是什么(“.xlsm”):
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
CleanFilenames = Table.TransformColumns(Source, {{"Submitted Reports", each if Text.EndsWith(_, ".xlsm") then Text.RemoveRange(_, Text.Length(_) - 5, 5) else _}})
in
CleanFilenames
或者如果您想删除四个字符的文件扩展名:
CleanFilenames = Table.TransformColumns(Source, {{"Submitted Reports", each if Text.Middle(_, Text.Length(_) - 5, 1) = "." then Text.RemoveRange(_, Text.Length(_) - 5, 5) else _}})
或者只删除最后五个字符:
CleanFilenames = Table.TransformColumns(Source, {{"Submitted Reports", each Text.RemoveRange(_, Text.Length(_) - 5, 5)}})