Это аккуратный вопрос.Вы можете сделать это с некоторыми функциями таблицы и списка 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"