如何在InstallScript中检测含随机版本号的指定格式路径子串
在InstallScript中检测特定格式的路径字符串
方法一:使用正则表达式匹配(适用于InstallScript 2015及以上版本)
InstallScript从2015版本开始支持正则表达式,可直接通过正则匹配目标格式路径:
function BOOL CheckMatchingPath(sInputString) STRING sPattern; OBJECT oRegExp; BOOL bFound; // 定义正则模式:匹配C:\program files(x86)\MySoftware\任意内容\bin // InstallScript字符串中反斜杠需转义为双反斜杠,正则特殊字符括号也需转义 sPattern = "C:\\\\program files\\(x86\\)\\\\MySoftware\\\\[^\\\\]+\\\\bin"; // 创建正则表达式对象 set oRegExp = CreateObject("VBScript.RegExp"); oRegExp.Pattern = sPattern; oRegExp.IgnoreCase = TRUE; // 按需开启大小写忽略 // 执行匹配检测 bFound = oRegExp.Test(sInputString); // 释放对象 set oRegExp = NOTHING; return bFound; end;
方法二:手动字符串拆分(兼容旧版InstallScript)
若环境不支持正则,可通过字符串函数手动校验路径结构:
function BOOL CheckMatchingPath(sInputString) STRING sPrefix, sSuffix; NUMBER nPrefixPos, nSuffixStart, nSuffixPos, nMidSlashPos; BOOL bValid; sPrefix = "C:\\program files(x86)\\MySoftware\\"; sSuffix = "\\bin"; // 查找前缀起始位置 nPrefixPos = StrFind(sInputString, sPrefix); if (nPrefixPos < 0) then return FALSE; endif; // 计算前缀结束后的起始索引,查找后缀位置 nSuffixStart = nPrefixPos + StrLength(sPrefix); nSuffixPos = StrFind(StrMid(sInputString, nSuffixStart), sSuffix); if (nSuffixPos < 0) then return FALSE; endif; // 检查前缀结束到后缀起始之间是否无额外反斜杠(确保版本号是单一路径段) nMidSlashPos = StrFind(StrMid(sInputString, nSuffixStart, nSuffixPos), "\\"); if (nMidSlashPos >= 0) then return FALSE; endif; return TRUE; end;
使用说明
调用上述函数时传入待检测字符串即可,返回TRUE表示存在符合格式的子串,FALSE则表示不存在。正则方法适配性更强,手动拆分方法兼容性更好,可根据环境选择。
内容的提问来源于stack exchange,提问作者StackUser
相关产品推荐
相关产品推荐

