const nrFormat = (nr: string) => { const endFormat = (nr: string) => { const l = nr.length; if(l > 9) { return nr.substr(0, 3) + ' ' + nr.substr(3, 3) + ' ' + endFormat(nr.substr(6)); } if(l > 6) { return nr.substr(0, 3) + ' ' + endFormat(nr.substr(3)); } if(l === 6) { return nr.substr(0, 2) + ' ' + nr.substr(2, 2) + ' ' + nr.substr(4); } if(l > 3) { return nr.substr(0, l - 2) + ' ' + nr.substr(l - 2); } return nr; } const svFormat = (nr: string) => { const prefixes = ['200', '20', '900', '90', '8', '10', '11', '13', '16', '18', '19', '21', '23', '26', '31', '33', '35', '36', '40', '42', '44', '46', '54', '60', '63', '99']; for(const prefix of prefixes) { if(nr.substr(0, prefix.length) === prefix) { return prefix + '-' + endFormat(nr.substr(prefix.length)); } } return nr.substr(0, 3) + '-' + endFormat(nr.substr(3)); }; const digits = nr.replace(/\D/g, ''); if(digits[0] === '0') { return '+46 (0) ' + svFormat(digits.substr(1)); } if (digits[0] !== '4' || digits[1] !== '6') { return nr; } if (digits[2] === '0') { return '+46 (0) ' + svFormat(digits.substr(3)); } return '+46 (0) ' + svFormat(digits.substr(2)); };