PQ-M及函数:文本中按给定列表保留所需字符内容

小勤:上次试了《要删的内容很复杂,列举不完,那能不能想要啥就提取啥?》文章中的方法,但发现里面的List.Select函数的判断都是针对连续的字符的,所以用了each _>”A”and _<”z”的判断条件,问题是,有时候要保留的内容可能不是这种连续的,比如保留英文和横杠(-)等等:

大海:其实这也很简单,你可以在条件里加上or语句对零散的内容进行判断,比如这样:

=Text.Combine(

    List.Select(

       Text.ToList([公司]),

       each_>="A" and _<="z" or _="-"

    )

 )

小勤:这个能想到,但有没有更加结构化的写法?比如给了一个需要保留的列表,甚至可能是动态的,然后判断每个元素是不是属于要保留的列表中的元素?

大海:嗯,其实你能想到这个就可以去查阅函数帮助了,其中有个函数叫List.Contains。在这里写法如下,公式:

=Text.Combine(

    List.Select(

       Text.ToList([公司]),

       each List.Contains(

             {"A".."z","-"},

              _

           )

      )

  )

函数List.Contains,判断列表中是否包含某元素,也就是某个元素是否在列表中。用法:

  • List.Contains(列表,值)

参数:

  • 列表:需要判断的列表

  • 值:用于判断列表中是否包含的元素

小栗子:

  • List.Contains({1,3,5},3)

  • 结果:True

小勤:这个函数好,以后甚至可以通过动态参数的方式将需要保留的内容传递进去,然后就可实现动态数据保留了。

大海:对的,虽然这样写起来又得套多一层函数,但思路非常清晰,而且一旦参数化,灵活性就更强。

小勤:嗯。



(0)

相关推荐