DOORS DXL字符串多部分匹配求助:matches函数不支持复杂场景
字符串多条目部分匹配解决方案
核心逻辑
别拿整个str1去匹配str2了,先把str1里的每个[SuRS_xxx]拆出来,挨个查有没有在str2里的,只要有一个能对上就返回true。
具体改法
第一步:拆分str1成单个条目
先把str1按空格拆成单独的项,比如你的示例里:
str1_split = split(str1, " ")
拆完就得到["[SuRS_39]", "[SuRS_161]", "[SuRS_162]"]这样的列表。
第二步:挨个检查每个条目是否在str2里
把原来的if (matches(str1, str2), do...)换成遍历拆分后的条目:
// 伪代码,根据你实际用的脚本语言调整语法 foreach (item in str1_split) { if (str2包含item) { 返回true; } } 返回false;
不同场景的简化写法
- 要是用Excel公式:把str1放A1,str2放B1,用这个公式就能直接判断:
=SUMPRODUCT(--ISNUMBER(SEARCH(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),(ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*99+1,99)),B1)))>0,结果为TRUE就是有匹配项。 - 要是用JavaScript:一行就能搞定:
str1.split(" ").some(item => str2.includes(item))
验证你的示例
用上面的逻辑,第一个条目[SuRS_39]就能在str2里找到,直接返回true,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

