43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
export class StringExtend {
|
|
/**
|
|
* 去除字符串【开头和结尾】的指定字符
|
|
* @param str 原始字符串
|
|
* @param char 要删除的字符(单个)
|
|
*/
|
|
static trim(str: string | null | undefined, char: string): string {
|
|
if (!str) return ''
|
|
if (char.length !== 1) return str
|
|
|
|
const escaped = this.#escapeRegChar(char)
|
|
return str.replace(new RegExp(`^${escaped}+|${escaped}+$`, 'g'), '')
|
|
}
|
|
|
|
/**
|
|
* 仅去除字符串【开头】的指定字符
|
|
*/
|
|
static trimStart(str: string | null | undefined, char: string): string {
|
|
if (!str) return ''
|
|
if (char.length !== 1) return str
|
|
|
|
const escaped = this.#escapeRegChar(char)
|
|
return str.replace(new RegExp(`^${escaped}+`, 'g'), '')
|
|
}
|
|
|
|
/**
|
|
* 仅去除字符串【结尾】的指定字符
|
|
*/
|
|
static trimEnd(str: string | null | undefined, char: string): string {
|
|
if (!str) return ''
|
|
if (char.length !== 1) return str
|
|
|
|
const escaped = this.#escapeRegChar(char)
|
|
return str.replace(new RegExp(`${escaped}+$`, 'g'), '')
|
|
}
|
|
|
|
/**
|
|
* 私有:转义正则特殊字符(. * + ? ^ $ 等)
|
|
*/
|
|
static #escapeRegChar(char: string): string {
|
|
return char.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
}
|
|
} |