zen-utils
Version:
90 lines (85 loc) • 1.96 kB
JavaScript
;
/*
* 根据方向自动进行字符串补齐操作
* @param str
* @param len
* @param pad
* @param dir
* @returns {string}
*/
exports.pad = function (arg) {
let { str = '', len = 0, pad = ' ', dir = 'right' } = arg;
let padlen = 0;
if (len > str.length) {
switch (dir) {
case 'left':
str = pad.repeat(len - str.length) + str;
break;
case 'both':
{
const right = Math.ceil((padlen = len - str.length) / 2),
left = padlen - right;
str = pad.repeat(left) + str + pad.repeat(right);
break;
}
case 'right':
str = str + pad.repeat(len - str.length);
break;
default:
return str;
}
}
return str;
};
/*
* 截取字符 超过指定长度采用chr进行替换
* @param str
* @param length
* @param chr
* @returns {string}
*/
/**
* Created by liguoxin on 2017/3/6.
*
*/
exports.truncate = function (str, length, chr = '…') {
return str.length >= length ? str.substr(0, length - chr.length) + chr : str;
};
/*
* 匹配包含颜色的字符数量
* @param str
* @returns {*}
*/
exports.strlen = function (str) {
const code = /\u001b\[(?:\d*;){0,5}\d*m/g,
stripped = ('' + str).replace(code, ''),
split = stripped.split('\n');
return split.reduce((memo, s) => {
return s.length > memo ? s.length : memo;
}, 0);
};
exports.startsWith = function (str, condition) {
if (str == null) {
return false;
}
return str.startsWith(condition);
};
exports.endsWith = function (str, condition) {
if (str == null) {
return false;
}
return str.endsWith(condition);
};
exports.containWith = function (str, condition) {
if (str == null) {
return false;
}
return str.indexOf(condition) !== -1;
};
exports.isBlank = function (str) {
return !str || !str.trim();
};
exports.isPositiveInteger = function (str) {
return (/^\d+$/.test(str)
);
};