Попробуйте функцию cleanEmailAddress
ниже:
let
cleanEmailAddress = (invalidEmailAddress as text) as text =>
let
removeLeadingNumbers = Text.AfterDelimiter(invalidEmailAddress, "."), // Assumes invalid numbers are followed by "." which itself also needs removing.
removeInvalidDomain = Text.BeforeDelimiter(removeLeadingNumbers, "@"),
replaceLastOccurrence = (someText as text, oldText as text, newText as text) as text =>
let
lastPosition = Text.PositionOf(someText, oldText, Occurrence.Last),
replaced = if lastPosition >= 0 then Text.ReplaceRange(someText, lastPosition, Text.Length(oldText), newText) else someText
in replaced,
overwriteTopLevelDomainSeparator = replaceLastOccurrence(removeInvalidDomain, "_", "."),
overwriteAtSymbol = replaceLastOccurrence(overwriteTopLevelDomainSeparator, "_", "@")
in overwriteAtSymbol,
cleaned = cleanEmailAddress("1234.my_email_gmail_com@error.invalid.com")
in
cleaned
Относительно:
- "Снимите цифры на передней панели (количество цифр варьируется) "
В вашем вопросе не упоминается, что делать с первой .
(которая остается, если вы удалите первые цифры), но ожидаемый результат ("my_email@gmail.com"
) предлагает его удалить. Адреса электронной почты, которые не имеют .
сразу после первых цифр, будут возвращать ошибку (и необходимо улучшить логическое выражение c для removeLeadingNumbers
).