本期案例是对数据中的数字进行脱敏处理,前后转换效果如下: 解题套路 1。Text。SplitAny 解题思路:根据数字进行拆分,然后使用分隔符进行合并。 Table。AddColumn(源,脱敏数据,eachText。Combine(Text。SplitAny(〔数据〕,Text。Combine({0。。9})),)) 2。Text。ToList 解题思路:转成列表,逐个进行判断,对于是数字型的进行替换,其余字符保持不变。 Table。AddColumn(源,脱敏数据,eachText。Combine(List。Transform(Text。ToList(〔数据〕),(x)ifList。Contains({0。。9},x)thenelsex))) 3。List。Accumulate 解题思路1:遍历0到9的数字,对字符串进行替换操作。 Table。AddColumn(源,脱敏数据,eachList。Accumulate({0。。9},〔数据〕,(x,y)Text。Replace(x,y,))) 解题思路2:对数字与其他字符进行分组处理,当出现其他字符的时候,对临时中转的数字根据长度替换为分隔符,其余直接进行连接。 Table。AddColumn(源,脱敏数据,eachList。Accumulate(Text。ToList(〔数据〕),{,},(x,y)ifList。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(源,脱敏数据,eachList。Accumulate(List。Combine(List。Transform({0。。9},(x)Text。PositionOf(〔数据〕,x,2))),〔数据〕,(s,c)Text。ReplaceRange(s,c,1,))) 4。List。ReplaceMatchingItems 解题思路1:函数是按组进行替换的,这里可以根据09的数字进行遍历构造,然后进行替换。 Table。AddColumn(源,脱敏数据,eachText。Combine(List。ReplaceMatchingItems(Text。ToList(〔数据〕),List。Transform({0。。9},each{,})))) 解题思路2:是对前述的简写,这里使用了函数的第三参数,构造了一个比较器,只要满足是数字的就进行替换。 Table。AddColumn(源,脱敏数据,eachText。Combine(List。ReplaceMatchingItems(Text。ToList(〔数据〕),{{0,}},eachA))) 5。Table。Group 解题思路:对字符按数字与其他字符进行分组,对于数字的,对于深化的Value列删除首项,并连接分隔符,其他的直接深化即可。 Table。AddColumn(源,脱敏数据,eachText。Combine(List。Combine(Table。Group(Table。FromValue(Text。ToList(〔数据〕)),Value,{a,eachifList。Contains({0。。9},〔Value〕{0})then{}List。Skip(〔Value〕)else〔Value〕},0,(x,y)Number。From(yA))〔a〕))) 其他组合方式不在赘述。 以上是本期内容。