Pau*_*tor 1 clojure string-parsing
我知道有很多关于将字符串转换为浮点数/数字/十进制的问题......但我的情况完全不同,因为我需要转换字符串数字(代表美元价值)但我必须在这个转换中保留美分,这是我的情况。
我收到此值 "96,26" "1.296,26" 我希望转换为以下值:96.26 1296.26
如果我尝试使用 clojure.edn 它会逃避美分
(edn/read-string "1.296,26")
=> 1.296
Run Code Online (Sandbox Code Playgroud)
(edn/read-string "96,26")
=> 96
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用像 bugdec 这样的另一种方法,我会得到 NumberFormatException
我知道我们可以做一些字符串替换,但它看起来像一个很大的工作,像这样:
(-> "1.296,87"
(clojure.string/replace #"\." "")
(clojure.string/replace #"," ".")
(edn/read-string))
Run Code Online (Sandbox Code Playgroud)
你可以做的是使用java的格式化工具:
(defn read-num [s]
(let [format (java.text.NumberFormat/getNumberInstance java.util.Locale/GERMANY)]
(.parse format s)))
user> (read-num "1.296,26")
;;=> 1296.26
user> (read-num "96,26")
;;=> 96.26
Run Code Online (Sandbox Code Playgroud)