Text.SplitAny 数值替换案例

本期案例是对数据中的数字进行脱敏处理,前后转换效果如下:

解题套路

1.Text.SplitAny

解题思路:根据数字进行拆分,然后使用分隔符“*”进行合并。

Table.AddColumn(源,"脱敏数据",each Text.Combine(Text.SplitAny([数据],Text.Combine({"0".."9"})),"*"))


2.Text.ToList

解题思路:转成列表,逐个进行判断,对于是数字型的进行替换,其余字符保持不变。

Table.AddColumn(源,"脱敏数据",each Text.Combine(List.Transform(Text.ToList([数据]),(x)=>if List.Contains({"0".."9"},x) then "*" else x)))


3.List.Accumulate

解题思路1:遍历0到9的数字,对字符串进行替换操作。

Table.AddColumn(源,"脱敏数据",each List.Accumulate({"0".."9"},[数据],(x,y)=>Text.Replace(x,y,"*")))


解题思路2:对数字与其他字符进行分组处理,当出现其他字符的时候,对临时中转的数字根据长度替换为分隔符,其余直接进行连接。

Table.AddColumn(源,"脱敏数据",each List.Accumulate(Text.ToList([数据]),{"",""},(x,y)=>if List.Contains({"0".."9"},y) then {x{0},x{1}&y} else {x{0}&Text.Repeat("*",Text.Length(x{1}))&y,""}){0})


解题思路3:判断0到9的数字在字符串中的位置,然后根据位置进行替换。

Table.AddColumn(源,"脱敏数据",each List.Accumulate(List.Combine(List.Transform({"0".."9"},(x)=>Text.PositionOf([数据],x,2))),[数据],(s,c)=>Text.ReplaceRange(s,c,1,"*")))


4.List.ReplaceMatchingItems

解题思路1:函数是按组进行替换的,这里可以根据0-9的数字进行遍历构造,然后进行替换。

Table.AddColumn(源,"脱敏数据",each Text.Combine(List.ReplaceMatchingItems(Text.ToList([数据]),List.Transform({"0".."9"},each {_,"*"}))))


解题思路2:是对前述的简写,这里使用了函数的第三参数,构造了一个比较器,只要满足是数字的就进行替换。

Table.AddColumn(源,"脱敏数据",each Text.Combine(List.ReplaceMatchingItems(Text.ToList([数据]),{{"0","*"}},each _>"A")))


5.Table.Group

解题思路:对字符按数字与其他字符进行分组,对于数字的,对于深化的Value列删除首项,并连接分隔符,其他的直接深化即可。

Table.AddColumn(源,"脱敏数据",each Text.Combine(List.Combine(Table.Group(Table.FromValue(Text.ToList([数据])),"Value",{"a",each if List.Contains({"0".."9"},[Value]{0}) then {"*"}&List.Skip([Value]) else [Value]},0,(x,y)=>Number.From(y<"A"))[a])))


其他组合方式不在赘述。

以上是本期内容。

展开阅读全文

页面更新:2024-05-02

标签:组合   遍历   字符串   本期   数值   函数   字符   思路   位置   案例   数字   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top