{"id":6108,"date":"2022-04-06T11:01:43","date_gmt":"2022-04-06T10:01:43","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=6108"},"modified":"2022-10-21T13:22:31","modified_gmt":"2022-10-21T12:22:31","slug":"typescript-get-number-from-string","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/typescript-get-number-from-string\/","title":{"rendered":"Typescript: get number from string"},"content":{"rendered":"\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"typescript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">\/\/ the simple one\nexport const getNumber = (x: any, def: number): number => {\n    if (typeof x === \"number\" &amp;&amp; isFinite(x)) return x;\n    if (!x) return def;\n    if (typeof x === \"string\") return getNumber(Number(x), def);\n    return def;\n};\n\n\/\/ for user input \/ display values\nexport function getNumberFromString(value: any) {\n    const s = String(value).replace(\/[^\\d\\.,-]\/, \"\");\n    const parts = s.split(\/[\\.,]\/);\n    if (parts.length > 1)\n        parts.splice(parts.length - 1, 0, \".\"); \/\/ insert at index\n    const j = parts.join(\"\");\n    return parseFloat(j) || 0.0;\n}\n\n\nconst result = getNumberFromString(\"52.000,6\");\nconsole.log(\"result\", result); \/\/ => 52000.6\n\n\/\/ works with:\n\/\/ 12345.56\n\/\/ 12345,56\n\/\/ 12,345.56\n\/\/ 12.345,56\n\/\/ 12.345.56 (results in the same, but is questionable)\n\/\/ 12345..56 (results in the same, but is questionable)\n\nexport function currencyFormat(value: number, currencyISO: string = 'EUR') {\n    if (typeof (value) !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)) return \"\";\n    const currencyFormatter = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: currencyISO, minimumFractionDigits: 2, maximumFractionDigits: 6 });\n    return currencyFormatter.format(value);\n}\n\n\n\n\n\n<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6108","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=6108"}],"version-history":[{"count":3,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6108\/revisions"}],"predecessor-version":[{"id":6873,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6108\/revisions\/6873"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=6108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=6108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=6108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}