¿Por qué no puedo encadenar String.replace?
Estoy trabajando en una función de formato de precio, que toma un flotante y la represento correctamente.
ex. 190.5, debe ser 190,50
Esto es lo que se me ocurrió
def format_price(price) do
price
|> to_string
|> String.replace ".", ","
|> String.replace ~r/,(\d)$/, ",\\1 0"
|> String.replace " ", ""
end
Si ejecuto lo siguiente.
format_price(299.0)
# -> 299,0
Parece que solo pasó por el primer reemplazo. Ahora si cambio esto a lo siguiente.
def format_price(price) do
formatted = price
|> to_string
|> String.replace ".", ","
formatted = formatted
|> String.replace ~r/,(\d)$/, ",\\1 0"
formatted = formatted
|> String.replace " ", ""
end
Entonces todo parece funcionar bien.
format_price(299.0)
# -> 299,00
¿Por qué es esto?