Reputation: 15216
I have a string with 2,3 or more spaces between non-space characters
string = "a b c d"
What can I do to make it like that:
output_string == "a b c d"
Upvotes: 12
Views: 5565
Reputation: 15343
For what it's worth, you don't even need the regex:
iex(3)> "a b c d" |> String.split |> Enum.join(" ")
#=>"a b c d"
Also just from my very little bit of smoke testing, it looks like this will work with any whitespace separators (i. e. it works on spaces and tabs as far as I can tell).
Upvotes: 6
Reputation: 121010
Another possibility would be to String#split
and Enum#join
:
iex(1)> "a b c d" |> String.split(~r{\s+}) |> Enum.join(" ")
#⇒ "a b c d"
Upvotes: 2
Reputation: 222368
The simplest way would be using Regular Expressions:
iex(1)> string = "a b c d"
"a b c d"
iex(2)> String.replace(string, ~r/ +/, " ") # replace only consecutive space characters
"a b c d"
iex(3)> String.replace(string, ~r/\s+/, " ") # replace any consecutive whitespace
"a b c d"
Upvotes: 21