Table.ReplaceValue替换…Replace…(Power Query 之 M 语言)
数据源:
任意数据源,包括文本和非文本两列
目标:
对数据进行替换操作
操作过程:
【主页】(或【转换】)》【替换值】
M公式:
= Table.ReplaceValue( 表, 查找值, 替换值, 替换种类, { "列名1",..., "列名n"})
替换种类:
Replacer.ReplaceValue:全部替换(包括文本和非文本)
Replacer.ReplaceText:局部替换(仅用于文本)
用于替换的特殊字符:
Tab:#(tab)
回车:#(cr)
换行:#(lf)
不间断空格:#(00A0)
扩展:
全部替换:= Replacer.ReplaceValue( "字符串"或数值, 查找的"字符串"或数值, 替换的"字符串"或数值)
局部替换:= Replacer.ReplaceText( "字符串", 查找的"字符串", 替换的"字符串")
表
替换整行:= Table.ReplaceMatchingRows( 表,{{查找记录1, 替换记录1},...,{查找记录n, 替换记录n}}, {"列名1",...,"列名n"})
查找记录与替换记录项名必须与表中的列一致
第三参数缺省,查找记录必须与表中整行匹配方可被替换,否则只要第三参数中列中的列与查找记录中相应的列一致即整行替换。
示例:表n行两列,标题名分别为“a”和“b"
= Table.ReplaceMatchingRows( 表, {[a = 1,b = 2], [a = -1, b = -2]})
行中同时满足a=1和b=2的记录被替换成a=-1和b=-2,其他不替换
= Table.ReplaceMatchingRows( 表, {[a = 1,b = 2], [a = -1, b = -2]},"a")
行中满足a=1的记录被替换成a=-1和b=-2,其他不替换
替换指定行:= Table.ReplaceRows( 表, 起始行, 被替换的行数, {替换的记录})
示例:表n行两列,标题名分别为“a”和“b”
= Table.ReplaceRows( 表, 2, 4, {[a=9,b=10],[a=11,b=12]})
从第3行起连续4行被替换成第四参数中的内容
列表
替换值:= List.ReplaceValue( 列表, 查找值, 替换值, 替换种类)
替换种类:Replacer.ReplaceValue / Replacer.ReplaceText
替换匹配项:= List.ReplaceMatchingItems( 列表, {{"查找内容1","替换内容1"},..., {"查的内容n","替换内容n"}}, each 函数 (..._...))
示例:= List.ReplaceMatchingItems( 列表,{{"a","x"}},each Text.Start(_,1))
列表中开头为“a”的项替换为“x”
示例:= List.ReplaceMatchingItems( {1..9},{{1,0}},each Number.Mod(_,2))
列表中所有数字除以2的余数为1的替换为0,即{0,2,0,4,0,6,0,8,0}
替换指定项:= List.ReplaceRange( 列表, 起始行, 被替换的行数, {替换的列表})
示例:= List.ReplaceRange({1..9}, 2, 4, {10,12})
从第3行起连续4行被替换成第四参数中的内容,即{1,2,10,12,7,8,9}
其他
文本字符替换:= Text.Replace( "字符串", "查找内容", "替换内容")
文本位置替换:= Text.ReplaceRange( "字符串", 起始位置, 被替换的字符数, "替换内容")