如何用整个字符串

时间:2016-09-08 14:09:22

标签: elixir

我有一个非空格字符之间有2,3或更多空格的字符串

string = "a  b c   d"

我能做些什么来做到这一点:

output_string == "a b c d"

4 个答案:

答案 0 :(得分:11)

最简单的方法是使用正则表达式:

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"

答案 1 :(得分:3)

为了它的价值,你甚至不需要正则表达式:

iex(3)> "a b c    d" |> String.split |> Enum.join(" ")
#=>"a b c d"

同样,从我的一点点烟雾测试来看,它看起来像是可以用于任何空格分隔符(即,就我所知,它适用于空格和制表符。)

答案 2 :(得分:2)

另一种可能性是String#splitEnum#join

iex(1)> "a  b c   d" |> String.split(~r{\s+}) |> Enum.join(" ")
#⇒ "a b c d"

答案 3 :(得分:0)

Regex.replace(~r / \ s + /," a b c d","")