powerquery - 将字符串中的多个单词替换为列表中的特定单词

标签 powerquery m

如何使用 M 语言将字符串中的特定单词替换为表中指定的其他特定单词?

查看我的示例数据:

enter image description here

源代码:

let
    someTable = Table.FromColumns({{"aa &bb &cc dd","&ee ff &gg hh &ii"}, {Table.FromColumns({{"&bb","&cc"}, {"ReplacementForbb", "ccReplacement"}},{"StringToFind", "ReplaceWith"}), Table.FromColumns({{"&ee", "&gg","&ii"}, {"OtherReplacementForee", "SomeReplacementForgg", "Replacingii"}},{"StringToFind", "ReplaceWith"})}, {"aa ReplacementForbb ccReplacement dd","OtherReplacementForee ff SomeReplacementForgg hh Replacingii"}},{"OriginalString", "Replacements", "WantedResult"})
in
    someTable

最佳答案

这是一个很好的问题。您可以使用一些表来执行此操作,并将 M 函数作为自定义列列出,如下所示:

= Text.Combine(
      List.ReplaceMatchingItems(
          Text.Split([OriginalString], " "),
          List.Transform(Table.ToList([Replacements]),
              each Text.Split(_,",")
          )
      ),
  " ")

我将使用第一行作为示例来演示其工作原理。


[OriginalString]"aa &bb &cc dd"我们使用 Text.Split将其转换为列表。

"aa &bb &cc dd" --Text.Split--> {"aa", "&bb", "&cc", "dd"}

现在我们需要处理 [Replacements]表并将其转换为列表的列表。开头是:

StringToFind  ReplaceWith
------------------------------
&bb           ReplacementForbb
&bb           ccReplacement

使用Table.ToList这将成为一个两个元素的列表(因为该表有两行)。

{"&bb,ReplacementForbb","&cc,ccReplacement"}

使用Text.Split在逗号上,我们可以将每个元素转换成一个列表来得到

{{"&bb","ReplacementForbb"},{"&cc","ccReplacement"}}

这是我们需要的 List.ReplaceMatchingItems 的形式功能。

List.ReplaceMatchingItems(
    {"aa", "&bb", "&cc", "dd"},
    {{"&bb","ReplacementForbb"},{"&cc","ccReplacement"}}
)

这会进行替换并返回列表

{"aa","ReplacementForbb","ccReplacement","dd"}

最后,我们使用Text.Combine将上面的列表连接成一个字符串。

"aa ReplacementForbb ccReplacement dd"

关于powerquery - 将字符串中的多个单词替换为列表中的特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54401498/

相关文章:

powerbi - 如何将power bi中的查询与2个主键合并

powerbi - 通过变量引用列

c++ - 实际输入到FFT,然后iFFT返回到一维数组中的实际数据

if-statement - 联合以及如果值存在于其他表 Power BI 中

excel - 将列表传递给 Table.RemoveColumns

excel - 在 PowerQuery/M 中插入带有值列表的新列

powerbi - 从Power BI导出百万行表克服了15万行的限制

sql - Power BI DAX,仅包含最后一个日期的筛选器的总和列

excel - 如何按索引或位置引用Power Query中的列?

excel - 使用新行动态旋转 n 行以获取多个值