问题描述
我想在给定列的字符串中找到指定的文本,并计算该字符串在整个列中重复多少次。
例如,在列的字符串中找到“ XX”,然后将找到文本的次数打印到对话框。
Module m = current
Object o
string s
string x
int offset = null
int len = null
int c
for o in m do
{
string s = probeAttr_(o,"AttributeA")
x = o."Object Text" ""
if(findplainText(s,"XX",offset,len,false)){
print "Success "
} else {
print "Failed to match"
}
}
我试图使用命令findplainText,但是我无意间将每个对象都传递为true。 同样,我将输出放置为打印“成功”或“失败匹配”,这样我至少可以得到所传递内容的数量。不幸的是,似乎一切都已经过去了!
我的理解是'probeAttr_(o,“ AttributeA”)'允许我指定并输入要搜索的列。同样,o。“ Object Text”“”现在允许我在任何对象中查找并搜索包含的任何文本。我还意识到变量x并没有被使用,但是假设它可以使用某种方式来解决此问题。
我只在表面上使用DOORS,但是具有此功能将节省其他人员大量的时间。我意识到这可以使用DOORS的高级过滤功能来实现,但我可以将此代码与其他简单命令进行组合以节省时间。
预先感谢您的帮助!
解决方法
如果您要计算所有对象的属性中文本中指定字符串的每次出现次数,我认为Mike的建议是正确的答案。如果您只是感兴趣,如果指定的字符串在该对象的属性中出现一次,我建议使用Regexp,因为我发现它非常快速,功能强大且易于使用,例如:
Regexp reSearch = regexp2 "XX"
int iCounter = 0
string strOT = ""
for o in m do {
strOT = o."Object Text" ""
if (reSearch strOT) {
iCounter++
}
}
print "Counted: '" iCounter "'\n"
,
其中大多数已在(DXL/Doors) How to find and count a text in a string?中得到了回答 您可以轻松地与柜台交换“印刷品”。