21 lines
819 B
JavaScript
21 lines
819 B
JavaScript
|
|
/**
|
|||
|
|
* 将字符串中的 '9999-12-31' <-> '长期' 互换并返回修改后的字符串
|
|||
|
|
* 同时存在两者时不会互相覆盖(使用占位符处理)
|
|||
|
|
* @param {any} v - 期望传入 string,非 string 将直接返回原值
|
|||
|
|
* @returns {string|any} 修改后的字符串,或原值(非 string)
|
|||
|
|
*/
|
|||
|
|
export function swapLongTerm(v) {
|
|||
|
|
if (typeof v !== 'string') return v;
|
|||
|
|
|
|||
|
|
const PLACEHOLDER = '__$LONGTERM_PLACEHOLDER$__';
|
|||
|
|
|
|||
|
|
// 用来把任意字符串安全地放进 RegExp 构造器
|
|||
|
|
function escapeRegExp(s) {
|
|||
|
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return v
|
|||
|
|
.replace(/9999\.12\.31/g, PLACEHOLDER) // 注意转义点 \.
|
|||
|
|
.replace(/长期/g, '9999.12.31')
|
|||
|
|
.replace(new RegExp(escapeRegExp(PLACEHOLDER), 'g'), '长期'); // 安全转义占位符
|
|||
|
|
}
|