t-comm
Version:
专业、稳定、纯粹的工具库
128 lines (126 loc) • 2.69 kB
JavaScript
/**
* 横线转驼峰命名,如果第一个字符是字母,则不处理。
* @param {string} str 输入字符串
* @param {boolean} handleSnake 是否处理下划线,默认不处理
* @returns {string} 处理后的字符串
* @example
*
* camelize('ab-cd-ef')
*
* // => abCdEf
*
*/
function camelize(str, handleSnake) {
if (str === void 0) {
str = '';
}
if (handleSnake === void 0) {
handleSnake = false;
}
var camelizeRE = /-(\w)/g;
var snakeRE = /_(\w)/g;
var cb = function cb(str, re) {
if (str === void 0) {
str = '';
}
return str.replace(re, function (_, c) {
return c ? c.toUpperCase() : '';
});
};
if (!handleSnake) {
return cb(str, camelizeRE);
}
return cb(cb(str, camelizeRE), snakeRE);
}
var toCamel = camelize;
/**
* 驼峰命名转横线命名:拆分字符串,使用 - 相连,并且转换为小写
* @param {string} str 输入字符串
* @returns {string} 处理后的字符串
*
* @example
*
* hyphenate('abCd')
*
* // => ab-cd
*
*/
function hyphenate(str) {
var hyphenateRE = /\B([A-Z])/g;
return str.replace(hyphenateRE, '-$1').toLowerCase();
}
var toKebab = hyphenate;
/**
* 字符串首位大写
* @param {string} str 输入字符串
* @returns {string} 处理后的字符串
*
* @example
*
* capitalize('abc')
*
* // => Abc
*/
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
/**
* 将每个单词的首字母转换为大写
* @param {string} str 输入字符串
* @returns {string} 处理后的字符串
*
* @example
*
* titleize('my name is yang')
*
* // My Name Is Yang
*
* titleize('foo-bar')
*
* // Foo-Bar
*/
function titleize(str) {
if (typeof str !== 'string') {
throw new TypeError('Expected a string');
}
return str.toLowerCase().replace(/(?:^|\s|-)\S/g, function (x) {
return x.toUpperCase();
});
}
/**
* 首字母小写
* @param {string} str 输入字符串
* @returns {string} 输出字符串
* @example
*
* lowerInitial('GroupId')
*
* // groupId
*/
function lowerInitial(str) {
return str.replace(/^(\w)/, function (a, b) {
return b === null || b === void 0 ? void 0 : b.toLowerCase();
});
}
/**
* 用大驼峰,即 PascalCase 格式,来格式化字符串
* @param str 字符串
* @returns PascalCase 的字符串
*
* @example
* ```ts
* pascalCase('ab-cd')
* // AbCd
*
* pascalCase('ab_cd')
* // AbCd
* ```
*/
function pascalCase(str) {
if (str === void 0) {
str = '';
}
return capitalize(camelize(str));
}
var toPascal = hyphenate;
export { camelize, capitalize, hyphenate, lowerInitial, pascalCase, titleize, toCamel, toKebab, toPascal };