Home Reference Source

ts_temp/string/words.js

const camelCaseRegex = /([a-z])([A-Z])/g;
const nonCharRegex = /[^a-zA-Z]+/g;
/**
 * Splits string into an array of its words.
 *
 * This function supports only latin chars.
 *
 * @param {String} str The string to split.
 * @return {String[]} String' words.
 * @example
 *
 *      words('fooBarZoo');   //=> ['foo', 'Bar', 'Zoo']
 *      words('foo_bar_zoo'); //=> ['foo', 'bar', 'zoo']
 *      words('foo-bar-zoo'); //=> ['foo', 'bar', 'zoo']
 *      words('foo bar zoo'); //=> ['foo', 'bar', 'zoo']
 *      words('fooBär');      //=> ['foo', 'B', 'r'] only latin chars are supported
 */
export default function words(str) {
    return str.replace(camelCaseRegex, (_, char1, char2) => `${char1} ${char2}`).split(nonCharRegex);
}