(DXL / Doors)如何查找和计算字符串中的文本?

时间:2014-05-09 14:27:07

标签: ibm-doors

我想在每个对象的给定列中找到一个文本字符串,并计算该字符串重复的次数。

例如,我想定义为字符串列“XX”,我想在所有对象的“XX”列中找到文本“hello”。

除此之外,我希望每次找到“你好”时,应该按照脚本末尾的顺序计算,显示“你好”的总数。

我尝试使用命令findPLainText,但是一旦在对象中找到文本“hello”,它就会停止。因此,无论是在同一个对象中,例如“Hello here you have have 2 hello”,一旦找到第一个文本,就不会搜索或计算第二个文本。

我怎么做?

提前感谢您的帮助!!

编辑:我已将所有这些分成3个任务:

1.-提取某些列的文本,以便为每个对象定义一个字符串。

2.-在列文本中定义我正在寻找的第二个字符串。

3.-计算找到第二个字符串的次数。

我完成了2个首要任务:

int n=0
Column c
Object o
Module m
Buffer b = create
for o in document m do { 
b = text(column 0, o) text(column 1,o) text(column 2,o) 
string s = stringOf b
string sub ="XXX"
if (findPlainText(s, sub, offset, len, true)) { n += 1 }
}
print n

通过这个,我从第0,1和2列获得文本,将它们放在一个相同的字符串中。之后,我定义了我正在寻找“XXX”的文本。整个n给了我多少次它。

但是,在第一次在给定对象中找到文本后,此脚本无法正常工作,它将继续使用以下对象。所以文本只为每个对象找到一次。但是,相同的文本“XXX”是否包含多次相同的字符串s我无法计算它(例如,s =“XXX和XXX但是XXX”,此脚本计数1而不是3。

有人可以帮助我,纠正剧本吗?

提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

在循环中使用Buffer函数“contains”,当您找到每个实例时,更新下一次迭代的“contains”偏移量输入参数。像这样:

Buffer buf = create()
buf = "abc 123 abc 987 abc"
int index = 0
while(true)
{
    index = contains(buf, "abc", index)
    if(0 <= index)
    {
        print index "\n"
        index += length("abc")
    }
    else { print "stop\n" ; break }
}
delete(buf)

应输出:

0
8
16
stop

希望有所帮助。