Elm:String.toFloat 不适用于逗号,只能用点 - 怎么办?
Elm: String.toFloat doesn't work with comma only with point - what to do?
我是 elm 的新手,我想做一个简单的里程计数器应用程序。
如果我在 OK 分支中得到 "1.2"
(POINT) 表单输入 - String.toFloat
returns,数字为 1.2。
但是如果我得到 "1,2"
(逗号)形式的输入,那么 String.toFloat
returns 在 Err 分支中 "You can't have words, only numbers!"
这很像一个实时验证器。
代码:
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!" }
.
问题:那么我如何强制“1,2”的String.toFloat
给我1.2数字?
不幸的是,toFloat
的源代码被硬编码为仅 respect a dot as decimal separator。作为解决方法,您可以在将字符串传递给 toFloat
之前将字符串中的逗号替换为点。
String.Extra.replace
可用于简单的字符串替换。
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
In JavaScript parseFloat 也不支持逗号分隔符。
我是 elm 的新手,我想做一个简单的里程计数器应用程序。
如果我在 OK 分支中得到 "1.2"
(POINT) 表单输入 - String.toFloat
returns,数字为 1.2。
但是如果我得到 "1,2"
(逗号)形式的输入,那么 String.toFloat
returns 在 Err 分支中 "You can't have words, only numbers!"
这很像一个实时验证器。
代码:
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!" }
.
问题:那么我如何强制“1,2”的String.toFloat
给我1.2数字?
不幸的是,toFloat
的源代码被硬编码为仅 respect a dot as decimal separator。作为解决方法,您可以在将字符串传递给 toFloat
之前将字符串中的逗号替换为点。
String.Extra.replace
可用于简单的字符串替换。
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
In JavaScript parseFloat 也不支持逗号分隔符。