UNPKG

@lancercomet/utils

Version:
104 lines (103 loc) 3.81 kB
var CHAR_REGEX = charRegex(); /** * 将字符串转化为驼峰. * * @example * toCamelCase('lancer-comet') // lancerComet * * @param {string} text * @returns {string} */ function toCamelCase(text) { return text.replace(/-\w/g, clearAndUpper); } /** * 将字符串转换为帕斯卡. * * @example * toPascalCase('lancerc-comet') // LancerComet * * @param {string} text * @returns {string} */ function toPascalCase(text) { return text.replace(/(^\w|-\w)/g, clearAndUpper); } /** * 将字符串转化为 KebabCase. * * @example * toKebabCase('lancerComet') // lancer-comet * * @param {string} text * @returns {string} */ function toKebabCase(text) { return toPascalCase(text) .replace(/[A-Z]/g, function (t) { return '-' + t.toLowerCase(); }) .replace(/^-/, '') .replace(/-$/, ''); } /** * 获取字符串字节长度. * 一个汉字(双字节字符)将被当作两个字节统计. * * @param {string} str * @returns {number} */ function getStringByteLength(str) { return typeof str !== 'string' ? 0 : str.replace(/[\u4e00-\u9fa5]/g, 'aa').length; } /** * 获取字符串字符长度. * 此方法将把任意一个字符统计为 1, 包括 Unicode 的颜文字. * * @param {string} str * @returns {number} */ function getStringCharCount(str) { var _a, _b; return typeof str !== 'string' ? 0 : (_b = (_a = str.match(CHAR_REGEX)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; } export { getStringByteLength, toCamelCase, toPascalCase, toKebabCase, getStringCharCount }; function charRegex() { // Used to compose unicode character classes. var astralRange = '\\ud800-\\udfff'; var comboMarksRange = '\\u0300-\\u036f'; var comboHalfMarksRange = '\\ufe20-\\ufe2f'; var comboSymbolsRange = '\\u20d0-\\u20ff'; var comboMarksExtendedRange = '\\u1ab0-\\u1aff'; var comboMarksSupplementRange = '\\u1dc0-\\u1dff'; var comboRange = comboMarksRange + comboHalfMarksRange + comboSymbolsRange + comboMarksExtendedRange + comboMarksSupplementRange; var varRange = '\\ufe0e\\ufe0f'; var familyRange = '\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83C\\uDF93'; // Used to compose unicode capture groups. var astral = "[".concat(astralRange, "]"); var combo = "[".concat(comboRange, "]"); var fitz = '\\ud83c[\\udffb-\\udfff]'; var modifier = "(?:".concat(combo, "|").concat(fitz, ")"); var nonAstral = "[^".concat(astralRange, "]"); var regional = '(?:\\uD83C[\\uDDE6-\\uDDFF]){2}'; var surrogatePair = '[\\ud800-\\udbff][\\udc00-\\udfff]'; var zwj = '\\u200d'; var blackFlag = '(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40' + '(?:\\udc65|\\udc73|\\udc77)\\udb40(?:\\udc6e|\\udc63|\\udc6c)\\udb40(?:\\udc67|\\udc74|\\udc73)\\udb40\\udc7f)'; var family = "[".concat(familyRange, "]"); // Used to compose unicode regexes. var optModifier = "".concat(modifier, "?"); var optVar = "[".concat(varRange, "]?"); var optJoin = "(?:".concat(zwj, "(?:").concat([nonAstral, regional, surrogatePair].join('|'), ")").concat(optVar + optModifier, ")*"); var seq = optVar + optModifier + optJoin; var nonAstralCombo = "".concat(nonAstral).concat(combo, "?"); var symbol = "(?:".concat([nonAstralCombo, combo, regional, surrogatePair, astral, family].join('|'), ")"); // Used to match [String symbols](https://mathiasbynens.be/notes/javascript-unicode). return new RegExp("".concat(blackFlag, "|").concat(fitz, "(?=").concat(fitz, ")|").concat(symbol + seq), 'g'); } function clearAndUpper(text) { return text.replace(/-/, '').toUpperCase(); }