humble-utils
Version:
javascript utils
118 lines (116 loc) • 3.48 kB
text/typescript
/**
* @Author : Humility
* @Date : 2021-10-24 21:37:35
* @LastEditTime : 2022-09-13 09:49:47
* @LastEditors : Humility
* @FilePath : \humble-utils\src\string.ts
* @Description : 字符串
*/
/**
* 字符串去空格
* @description: 去空格类型 1:所有空格 2:前后空格 3:前空格 4:后空格
* @param {String} str 目标字符串
* @param {Number} type 去空格类型
* @return {String} 去除空格后的字符串
*/
export function trim(str: string, type = 1) {
switch (type) {
case 1:
return str.replace(/\s+/g, "");
case 2:
return str.replace(/(^\s*)|(\s*$)/g, "");
case 3:
return str.replace(/(^\s*)/g, "");
case 4:
return str.replace(/(\s*$)/g, "");
default:
return str;
}
}
/**
* 字符(英文)转换
* @description: 转换类型 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写
* @param {String} str 目标字符串
* @param {Number} type 转换类型
* @return {String}
*/
export function changeCase(str: string, type = 4) {
switch (type) {
case 1:
return str.replace(/\b\w+\b/g, function (word) {
return (
word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()
);
});
case 2:
return str.replace(/\b\w+\b/g, function (word) {
return (
word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase()
);
});
case 3:
return str
.split("")
.map(function (word) {
if (/[a-z]/.test(word)) {
return word.toUpperCase();
} else {
return word.toLowerCase();
}
})
.join("");
case 4:
return str.toUpperCase();
case 5:
return str.toLowerCase();
default:
return str;
}
}
/**
* 在字符串中插入新字符串
* @param {String} soure 原字符串
* @param {Number} index 目标位置
* @param {String} newStr 需要插入的字符串
* @return {String} 插入字符串后的新字符串
*/
export function insertStr(soure: string, index = 1, newStr = "") {
let str = soure.slice(0, index) + newStr + soure.slice(index);
return str;
}
/**
* 16进制颜色转RGB/RGBA字符串
* @param {String} val 16进制颜色
* @param {Number} opa 透明度
* @return {String} RGB/RGBA字符串
*/
export function hexToRGB(val: string, opa = 1) {
let pattern = /^(#?)[a-fA-F0-9]{6}$/; //16进制颜色值校验规则
let isOpa = typeof opa == "number"; //判断是否有设置不透明度
if (!pattern.test(val)) {
//如果值不符合规则返回空字符
return "";
}
let v = val.replace(/#/, ""); //如果有#号先去除#号
let rgbArr = [];
let rgbStr = "";
for (let i = 0; i < 3; i++) {
let item = v.substring(i * 2, i * 2 + 2);
let num = parseInt(item, 16);
rgbArr.push(num);
}
rgbStr = rgbArr.join();
rgbStr =
"rgb" + (isOpa ? "a" : "") + "(" + rgbStr + (isOpa ? "," + opa : "") + ")";
return rgbStr;
}
/**
* RGB/RGBA字符串转16进制颜色
* @param {Number} r 红色通道
* @param {Number} g 绿色通道
* @param {Number} b 蓝色通道
* @return {String} 16进制颜色
*/
export function rgbToHex(r: number, g: number, b: number) {
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}