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'), '长期'); // 安全转义占位符
|
||
} |