// the simple one
export const getNumber = (x: any, def: number): number => {
if (typeof x === "number" && isFinite(x)) return x;
if (!x) return def;
if (typeof x === "string") return getNumber(Number(x), def);
return def;
};
// for user input / display values
export function getNumberFromString(value: any) {
const s = String(value).replace(/[^\d\.,-]/, "");
const parts = s.split(/[\.,]/);
if (parts.length > 1)
parts.splice(parts.length - 1, 0, "."); // insert at index
const j = parts.join("");
return parseFloat(j) || 0.0;
}
const result = getNumberFromString("52.000,6");
console.log("result", result); // => 52000.6
// works with:
// 12345.56
// 12345,56
// 12,345.56
// 12.345,56
// 12.345.56 (results in the same, but is questionable)
// 12345..56 (results in the same, but is questionable)
export function currencyFormat(value: number, currencyISO: string = 'EUR') {
if (typeof (value) !== "number" || Number.isNaN(value) || !Number.isFinite(value)) return "";
const currencyFormatter = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: currencyISO, minimumFractionDigits: 2, maximumFractionDigits: 6 });
return currencyFormatter.format(value);
}
610800cookie-checkTypescript: get number from string