如何根据字串长度进行排序
List.Sort是对list进行排序的函数,在函数说明中有如下图的例子:
这个例子说明List.Sort()加上Value.Compare()的组合是可以对以串列元素为自变量的函数结果进行排序,比如可以根据字串长度进行排序。如果我们有串列为{"**", "+++", "&&&&", "\"},需要根据字串长度进行降序排序,可以通过下图的公式解决这个问题:
let
Source=
List.Sort(
{"**", "+++", "&&&&", "\"},
字符串长度排序c语言(x,y)=>
Value.Compare(
1/Text.Length(x),
1/Text.Length(y)
)
)
in
Source
博主说:
螺旋矛盾同学的投稿,在此表示感谢,也非常欢迎其他同学的积极投稿。
以上为螺旋矛盾
有关List.Sort函数,需要两个参数,第二参数类型为可选的any。当一个函数参数为any的时候,灵活性就大大提高,可玩性也非常高。
有但不局限于以下几种用法:
第二参数可以不填,= List.Sort({"**", "+++", "&&&&", "\"}),文本默认按照首字符ASCII码升序排序。
第二参数填固定枚举值,Order.Descending/Order.Ascending,按照指定升序/降序排列,或用0、1替代,
= List.Sort({"**", "+++", "&&&&", "\"},1)表示指定按照降序排列。
也可以是一个函数或表达式,比如按照文本长度排序,默认升序,= List.Sort({"**", "+++", "&&&&", "\"},each Text.Length(_)),或者简化为= List.Sort({"**", "+++", "&&&&", "\"},Text.Length)
这是按照文本长度升序,文本越长排名越靠前,如何降序呢?比如可以用1除,分母越大结果越小,排名就越靠后,
= List.Sort({"**", "+++", "&&&&", "\"},each 1/Text.Length(_))。
或者可以对升序排列的结果嵌套逆序函数,= List.Reverse(List.Sort({"**", "+++", "&&&&", "\"},Text.Length))。
再或者直接第二参数填list控制排序方式,= List.Sort({"**", "+++", "&&&&", "\"},{Text.Length,1})。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论