Forum Discussion
M Language Remove Duplicate or Repeating Spaces or Characters
I couldn't find a example for how to do this (Removing Repeating Spaces) so I am posting this. It would work for any repeating Characters beyond spaces.
let
Source = "abc ABC DEF ABC",
StringToCleanOfExtraSpaces = Source,
SourceSingleSpaced = Text.Combine(
List.RemoveNulls(
List.Transform(
List.Positions(
Text.ToList(
StringToCleanOfExtraSpaces)), each
if _ = 0 then Text.Range(StringToCleanOfExtraSpaces, _ , 1)
else if Text.Range(StringToCleanOfExtraSpaces, _ -1,1)=" " and Text.Range(StringToCleanOfExtraSpaces, _ ,1)=" " then null
else Text.Range(StringToCleanOfExtraSpaces, _, 1))))
in
SourceSingleSpacedHi Anonymous,
There is no stock function to remove repeating spaces. If you only concerned about spaces, the function can be shorter, but not much:
let Source = "abc ABC DEF ABC", StringToCleanOfExtraSpaces = Source, SourceSingleSpaced = Text.Combine( List.Accumulate( Text.ToList(StringToCleanOfExtraSpaces), {}, (a, n)=> if n = " " and List.Last(a) = " " then a else a & {n})) in SourceSingleSpacedKind regards,
John
Here are a couple of shorter options.
let StringToClean = " abc ABC DEF ABC ", SplitText = Text.Split(StringToClean, " "), RemoveBlanks = List.Select(SplitText, each _ <> ""), Result = Text.Combine(RemoveBlanks, " ") in ResultThis is a slightly simplified version of this post (only works for spaces).
let StringToClean = " abc ABC DEF ABC ", Result = Text.Combine(Splitter.SplitTextByWhitespace()(Text.Trim(StringToClean)), " ") in ResultCredit to Frank Tonsen's comment on this post.
3 Replies
- jbwtpMemorable Member
Hi Anonymous,
There is no stock function to remove repeating spaces. If you only concerned about spaces, the function can be shorter, but not much:
let Source = "abc ABC DEF ABC", StringToCleanOfExtraSpaces = Source, SourceSingleSpaced = Text.Combine( List.Accumulate( Text.ToList(StringToCleanOfExtraSpaces), {}, (a, n)=> if n = " " and List.Last(a) = " " then a else a & {n})) in SourceSingleSpacedKind regards,
John
- AlexisOlsonSuper User
Here are a couple of shorter options.
let StringToClean = " abc ABC DEF ABC ", SplitText = Text.Split(StringToClean, " "), RemoveBlanks = List.Select(SplitText, each _ <> ""), Result = Text.Combine(RemoveBlanks, " ") in ResultThis is a slightly simplified version of this post (only works for spaces).
let StringToClean = " abc ABC DEF ABC ", Result = Text.Combine(Splitter.SplitTextByWhitespace()(Text.Trim(StringToClean)), " ") in ResultCredit to Frank Tonsen's comment on this post.
- AnonymousNot applicable
For spaces that last example is slick