Warum kann ich String.replace nicht verketten?

Ich arbeite an einer Preisformatfunktion, die einen Gleitkommawert annimmt und ihn richtig darstellt.

Ex. 190,5, sollte 190,50 @ se

Das ist was ich mir ausgedacht habe

  def format_price(price) do
    price
    |> to_string
    |> String.replace ".", ","
    |> String.replace ~r/,(\d)$/, ",\\1 0"
    |> String.replace " ", ""
  end

Wenn ich das folgende laufen lasse.

format_price(299.0)
# -> 299,0

Es sieht so aus, als hätte es nur den ersten Austausch durchlaufen. Nun, wenn ich dies wie folgt ändere.

  def format_price(price) do
    formatted = price
    |> to_string
    |> String.replace ".", ","

    formatted = formatted
    |> String.replace ~r/,(\d)$/, ",\\1 0"

    formatted = formatted
    |> String.replace " ", ""
  end

Dann scheint alles gut zu funktionieren.

format_price(299.0)
# -> 299,00

Warum ist das

Antworten auf die Frage(2)

Ihre Antwort auf die Frage