我对榆树很新,我想做一个简单的里程计数器应用程序。
如果我得到"1.2"
(POINT)表单输入 - String.toFloat
在OK分支中以1.2作为数字返回。
但是如果我得到"1,2"
(COMMA)表单输入,那么String.toFloat
将在"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!" }
.
问题:那么我怎样才能强制String.toFloat
" 1,2"给我1.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也不支持逗号分隔符。