JSFiddle - React, Tailwind, and code Playground

JavaScript

(function () {
    console.time('test');
    for (var i = 0; i < 100000; i++) {
        var fn = function (str) {
            var nch;
            if (str.indexOf('!.') === -1) {
                return str.split('.');
            }
            var path = [],
                item = '',
                ch = str.charAt(0),
                pch;
            for (var i = 0, l = str.length; i < l; i++) {
                nch = str.charAt(i + 1);
                if (ch === '.' && pch === '!') {
                    item += '.';
                } else if (ch === '.' && pch !== '!') {
                    path.push(item);
                    item = '';
                } else if (ch !== '!' || nch !== '.') {
                    item += ch;
                }
                pch = ch;
                ch = nch;
            }
            path.push(item);
            return path;
        };
    }

    fn('asdf');

    console.timeEnd('test');

})();