• 基本函数(2)——Power Query M语言


    基本函数2

    Text.ToList和Text.Split

    • Text.ToList从给定的文本值Text返回字符值列表

    Text.ToList(Text) as list

    示例:= Text.ToList("Hello World")

    输出:{"H","e","l","l","o"," ","W","o","r","l","d"}

     实例:拆分数字

    = List.Transform(更改的类型[QQ号], each Text.Combine(Text.ToList(_), "-"))

    Text.Split返回根据指定的分隔符Separator拆分文本Text而得到的文本值列表

    示例:= Text.Split("Name|Address|PhoneNumber", "|")

    输出:{"Name","Address","PhoneNumber"}

     实例:统计人数

    = List.Transform(源[名单], each List.Count(Text.Split (_,"、")))

    实例3:分离数字

    = List.Transform(源[代码], each Text.Combine(List.Select(Text.ToList(_), each _<="9"), ""))

    Text. Length、Text. Start、Text. End、Text. Middle、Text. Range

    Text. Length

    • 返回字符串的长度


    Text. Start与Text. End

    • Text. Start(字符串,个数) 返回字符串的前几个字符(从左提取)
    • Text. End(字符串,个数) 返回字符串的后几个字符(从右提取)


    Text. Range与Text. Middle

    • Text. Range(字符串,起始位置,长度)
    • Text. Middle(字符串,起始位置,长度)

    示例1:

    = Text.Range("abdcdef", 8)

    报错:超出范围

    = Text.Middle("abdcdef", 8)

    不报错:空

    示例2:提取复姓

    = Table.AddColumn(更改的类型, "自定义", each Text.Start([姓名], Number.From(List.PositionOf(复姓[复姓表], Text.Start([姓名], 2))<>-1)+1))

    示例:成绩分级{90,80,60,0}

     = Table.AddColumn(源, "自定义", (n)=>Text.Range("差中良优",List.Sum(List.Transform({90,80,60,0},  each Number.From(n[成绩]>=_)))-1,1))

    示例:分隔

    = Table.AddColumn(源, "自定义", (n)=>Text.Combine(List.Transform({0..Number.From(Text.Start(Text.From(Text.Length(n[账号])/4), 1))}, each Text.Middle(n[账号],_*4,4)), "-"))

    Text与Number

    字符与字符编码的转换

    • Character.FromNumber 数字转字符
    • Character.ToNumber 字符转数字
    • 字符表达方式:#(4位或8位16进制编码)
    • 10进制转16进制:Number.ToText(10进制数,”X”)
    • 控制字符:tab(制表符-9) lf(换行符-10) cr(回车符-13)
    • #(tab)
    • #(tab,cr) #(000A,000D)

    数字与文本值的转换

    • Text.From 将值转为文本类型(数字,日期,时间)
    • Number.From 将文本转为数字(数字,日期,时间,逻辑值)

    Value.FromText

    • 将文本格式的:数字,日期,时间,逻辑值等转为真正的格式

    示例:

    示例:

     

     

     

    实例:

    let
        源 = Excel.CurrentWorkbook(){[Name="表43"]}[Content],
        a = 源[分数],
        b = List.Transform(a, each Text.Split(_, ",")),
        c = List.Transform(b, each List.Zip(List.Transform(_, each Text.Split(_, "-")))),
        自定义1 = List.Transform(c, each Text.Combine(_{0}, "")&"#(lf)平均分:"&Number.ToText(List.Average(List.Transform(_{1}, each Value.FromText (_))),"f2"))
    in
        自定义1

    Text. Remove与Text.RemoveRange

    Text. Remove

    Text.Remove(文本,移除字符 as Any)

    Text.RemoveRange

    Text.RemoveRange(文本,移除起点位置,移除字符长度)

    示例:

    实例:

    1 let
    2     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    3     a = Table.AddColumn(源, "自定义", each Table.FromColumns(List.Transform({{"0".."9"}, {"一".."龥"}}, (n)=> List.Transform(Text.Split(Text.Remove([名单], n), "、"), each Value.FromText(_))),{"姓名","分数"})),
    4     #"展开的“自定义”" = Table.ExpandTableColumn(a, "自定义", {"姓名", "分数"}, {"姓名", "分数"}),
    5     删除的列 = Table.RemoveColumns(#"展开的“自定义”",{"名单"})
    6 in
    7     删除的列

    Text.PositionOf与Text.PositionOfAny

    Text.PositionOf

    Text.PositionOf(字符串,定位文本,0/1/2)

    • 定位文本可以一单个字符,也可以是多个字符。
    • 0:返回第1个
    • 1:返回最后1个
    • 2:返回全部

     

    Text.PositionOfAny

    Text.PositionOf(字符串,文本 as list,0/1/2)

    • 定位文本必须是单个字符,也必须是列表,
    • 0:返回第1个
    • 1:返回最后1个
    • 2:返回全部

     

    实例:

    提取最后一串字符
    统计每个级别的次数

     

    1 let
    2     源 = Excel.CurrentWorkbook(){[Name="表53"]}[Content],
    3     列表 = 源[编号],
    4     a = List.Transform(列表, each Text.Middle(_, Text.PositionOf(_, "-", 1)+1, 99 ))
    5 in
    6     a

    1 let
    2     源 = Excel.CurrentWorkbook(){[Name="表52"]}[Content],
    3     a = Table.AddColumn(源, "自定义", each Text.Combine(List.Transform({"优","良", "中", "差"}, (n)=> Number.ToText(List.Count(Text.PositionOf([级别], n, 2)), n&":" &"(0个)")), "#(lf)"))
    4 in
    5     a

    Or

    1 let
    2     源 = Excel.CurrentWorkbook(){[Name="表52"]}[Content],
    3     a = Table.AddColumn(源, "自定义", each Text.Combine(List.Transform({"优", "良", "中", "差"}, (x)=> Number.ToText(List.Count(List.Select(Text.ToList([级别]), each _=x)), x&":"&"(0个)")), "#(tab)"))
    4 in
    5     a

    Text. Replace Text.ReplaceRange Text.Insert

    Text. Replace

    Text. Replace(字符串,要查找字符,替换成新字符)

    Text.ReplaceRange

    Text.ReplaceRange(字符串,起始位置,字符个数,替换的新值)

    Text.Insert

    Text.Insert(字符串,插入位置,新值)

     

    实例:

    let
        源 = Excel.CurrentWorkbook(){[Name="表66"]}[Content],
        //a = Table.AddColumn(更改的类型, "自定义", each List.Transform(Text.Split([入围成员], "、"), (n)=> Text.Replace([成员], n, "")))  //这样是逐个遍历,达不到累计效果
        a = Table.AddColumn(源, "自定义", each Text.Combine(List.Select(Text.Split(List.Accumulate(Text.Split([入围成员], ""), [成员],(x,y)=> Text.Replace(x, y, "")), ""), each _<>""), "")),
        删除的列 = Table.RemoveColumns(a,{"组别", "成员", "入围成员"})  
    in
        删除的列

    1 let
    2     源 = Excel.CurrentWorkbook(){[Name="表67"]}[Content],
    3     已添加自定义 = Table.AddColumn(源, "自定义", each List.Accumulate({1..Text.Length([编号])/3-1},  " "&[编号], (x,y)=>Text.Insert(x, y*4,"-"))),
    4     去除的文本 = Table.TransformColumns(已添加自定义,{{"自定义", Text.Trim, type text}})
    5 in
    6     去除的文本

    let
        源 = Excel.CurrentWorkbook(){[Name="表68"]}[Content],
        更改的类型 = Table.TransformColumnTypes(源,{{"品名", type text}}),
        已添加自定义 = Table.AddColumn(更改的类型, "自定义", each Text.Insert([品名], List.Count(List.Select(Text.ToList([品名]), each _>"z")), "#(lf)"))
    in
        已添加自定义

    1

  • 相关阅读:
    vue路由懒加载
    Git文档
    Redis启动多个实例,并以windows服务方式运行
    windwos service安装命令
    sqlserver随机查询
    Redis 主从配置
    Unity3D 学习资料
    MAC常用终端命令
    服务器证书安装配置指南(IIS7)
    sql Exists与in 的区别
  • 原文地址:https://www.cnblogs.com/zeon/p/14766151.html
Copyright © 2020-2023  润新知