重构旧脚本时遇到先替换点再还原的操作,是否有保留必要?
旧脚本中先替换点再还原的逻辑疑问
我正在重构公司的大量旧脚本,其中一个脚本会先把点替换成字符串"ThisIsADot",之后又把这个字符串替换回点,完全搞不懂这么设计的逻辑。写脚本的员工已经离职,没法问原因,我打算删掉这段代码,但不知道有没有忽略什么必须保留它的理由?
示例代码:
$strDotReplacement = "ThisIsADot" $strAlias = "" $strRawAlias = ("%param-Alias%" -replace '\.',$strDotReplacement) -replace '[\W]','' $strAlias = ($strRawAlias -replace $strDotReplacement,'.').toLower()
其中%param-Alias%是Adaxes参数,通常格式为"name.lastname"。
可能的保留原因
- 防止点被误删:中间的
-replace '[\W]',''是清除所有非单词字符(\W匹配字母、数字、下划线之外的所有字符)。要是直接处理原字符串,点会被当成非单词字符一起删掉。先把点替换成纯字母的"ThisIsADot",就能避开这个清理规则,之后再还原回点,这样最终结果里的点能被保留下来。 - 适配特殊输入场景:虽然现在
%param-Alias%大多是"name.lastname"格式,但说不定以前存在过带其他非单词字符的情况,比如"name.middle-lastname"(带连字符)。这时候脚本需要删掉连字符但保留点,这套替换逻辑刚好能实现这个需求。 - 兼容历史异常输入:也许之前有过格式混乱的参数值,比如包含空格、特殊符号的别名,这套逻辑是为了在清理那些非法字符的同时,确保点不会被误删。
要不要删?
如果现在%param-Alias%的输入格式非常固定,只有字母、点,没有其他杂七杂八的非单词字符,那直接简化代码完全没问题:
$strAlias = "%param-Alias%".toLower()
但要是拿不准有没有特殊输入场景,建议先做测试——用各种可能的异常输入(比如带连字符、空格的别名)分别跑新旧代码,对比输出结果。如果输出完全一致,再删这段逻辑也不迟。
内容的提问来源于stack exchange,提问作者Marc H
相关产品推荐
相关产品推荐

