榆树:String.toFloat只能用逗号处理逗号 - 怎么办?

时间:2016-10-08 13:58:37

标签: elm

我对榆树很新,我想做一个简单的里程计数器应用程序。

如果我得到"1.2"(POINT)表单输入 - String.toFloat在OK分支中以1.2作为数字返回。

但是如果我得到"1,2"(COMMA)表单输入,那么String.toFloat将在"You can't have words, only numbers!"

的Err分支中返回

这几乎就像一个实时验证器。 enter image description here

代码:

TypingInInput val ->
        case String.toFloat val of
            Ok success ->
                { model | inputValue = val, errorMessage = Nothing }

            Err err ->
                { model | inputValue = val, errorMessage = Just "You can't have words, or spaces, only numbers!" } 
   .

问题:那么我怎样才能强制String.toFloat" 1,2"给我1.2 数字

2 个答案:

答案 0 :(得分:4)

不幸的是,toFloat的来源仅硬编码为respect a dot as decimal separator。您可以将字符串中的点替换为逗号,然后将其作为变通方法传递给toFloat

String.Extra.replace可用于简单的字符串替换。

答案 1 :(得分:1)

String.toFloat的实现仅支持点作为分隔符。

在解析Float

之前,您应该首先替换逗号

请参阅示例:

import Html exposing (text)
import String
import Regex


main =
  "1,2"
    |> Regex.replace Regex.All (Regex.regex ",") (\_ -> ".")
    |> String.toFloat
    |> toString
    |> text -- 1.2

在JavaScript中parseFloat也不支持逗号分隔符。