/** Extracts the first number formatted by ns.format.number() in a string. * @param {string} s String containing a formatted number * @returns {number} number */ function parseFormattedNumber(s) { if (typeof s !== "string") {ns.print("WARN: parseFormattedNumber: invalid type for input " + s); return NaN;} const [ // Ex.: "Gained $250.000m" num, // "250.000m" base, // "250.000" suffix // "m" ] = s.match(/(-?\d+(?:[\.,]\d{1,5})?)(e\d+|[kmbtqQsSon])?/); if (!num || !base) {ns.print("WARN: parseFormattedNumber: no valid number found for input " + s); return NaN;} const numSuffixList = ["", "k", "m", "b", "t", "q", "Q", "s", "S", "o", "n"]; let exp = suffix ?? ""; if (suffix && numSuffixList.includes(suffix)) { exp = "e" + (numSuffixList.indexOf(suffix) * 3); } return parseFloat(base.replace(",",".") + exp); }