我想在每个对象的给定列中找到一个文本字符串,并计算该字符串重复的次数。
例如,我想定义为字符串列“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。
有人可以帮助我,纠正剧本吗?
提前感谢您的帮助!!
答案 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
希望有所帮助。