1、解析
2、语法结构
Expression.Evaluate(“”)
3、举例
(1)当成宏表函数使用
= Expression.Evaluate("7+30") 返回:37
= Expression.Evaluate("let a=7, b=30, c=a+b in c") 返回:37
(2)构建list
=Expression.Evaluate("{"&"1..4"&"}") 返回:{1,2,3,4}
= Expression.Evaluate("{"&"1,2,3,4"&"}") 返回:{1,2,3,4}
(3)嵌套函数使用【#shared 或者 [List.Sum = List.Sum]】有环境时不用加,只有在没有环境时才使用
外面用了双引号,里面有2个双引号
= Expression.Evaluate("Text.ToList(""ABCD"")",#shared)
= Expression.Evaluate("Text.ToList(""ABCD"")",[Text.ToList=Text.ToList])
= Expression.Evaluate("List.Sum({1, 2, 3})", #shared)
= Expression.Evaluate("List.Sum({1, 2, 3})", [List.Sum = List.Sum])
(4)引用上一步且没有函数使用【[a = a]】
let
a = {1..10},
b = Expression.Evaluate("a{0}",[a=a])
in
b
首先创建一个1到10的list,然后取出list中的第一个值
这是因为该函数只对括号内的环境运算,a是另一个步骤和它没关系,所以它并不知道你这个a是什么鬼,你得指定一个record告诉它
(5)引用上一步,但是有函数时使用【#shared&[a = a]】
let
a = "ABCDEFG",
b = Expression.Evaluate("Text.ToList(a)",#shared&[a = a])
或者 b= Expression.Evaluate("Text.ToList(a)",[Text.ToList=Text.ToList]&[a=a])
in
b
1、Text.AfterDelimiter
(1)解析:
Text.AfterDelimiter取分割符之后的值
(2)语法结构
Text.AfterDelimiter(字符串,"分割符",{指定第几个分隔符,正/反顺序})
(3)举例
= Text.AfterDelimiter("111-222-333", "-") 返回:第1个(下标0开始)连字符后面的部分 “222-333”
= Text.AfterDelimiter("111-222-333", "-", 1) 返回:第2个连字符后面的部分 “333”
= Text.AfterDelimiter("111-222-333", "-", {1,RelativePosition.FromEnd}) 返回倒数第2个连字符后面的部分
= Text.AfterDelimiter("111-222-333", "-", {1,RelativePosition.FromStart}) 返回正数第2个连字符后面的部分
2、Text.BeforeDelimiter:取分割符之前的值
3、Text.BetweenDelimiters
(1)解析:
取分割符之间的值
(2)语法结构
Text.BetweenDelimiters(字符串,"第一个分割","第二个分隔符",{第一个分隔符的位置,顺序},{第二个分隔符的位置,顺序})
获取 "111 (222) 333 (444)" (第一个)左括号及其随后(第一个)右括号之间的部分。
Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")") 返回:222
获取 "111 (222) 333 (444)" 第二个左括号及其随后第一个右括号之间的部分。
Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")", 1, 0) 返回:444
举一反三:
取第1个左括号及其随后第2个右括号之间的值
= Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")", 0, 1) 返回:222) 333 (444
联系客服