puggan icon

nrFormat.ts

puggan | PRO | 03/25/20 05:02:10 PM UTC | 0 ⭐ | 7556 👁️ | Never ⏰ | []
TypoScript |

1.55 KB

|

None

|

0 👍

/

0 👎

    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));
    };

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎