gpt4 book ai didi

java - OpenOffice xSentenceCursor 卡在段落末尾

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:27 25 4
gpt4 key购买 nike

我正在使用此例程来迭代 OpenOffice 文档中的句子:

    while (moreParagraphsOO) {
while (moreSentencesOO) {
xSentenceCursor.gotoEndOfSentence(true);
textSentence = xSentenceCursor.getString();
xTextViewCursor.gotoRange(xSentenceCursor.getStart(), false);
xTextViewCursor.gotoRange(xSentenceCursor.getEnd(), true);
if (!textSentence.equals("")) {
return textSentence;
}
moreSentencesOO = xSentenceCursor.gotoNextSentence(false);

}

moreParagraphsOO = xParagraphCursor.gotoNextParagraph(false);
moreSentencesOO = xSentenceCursor.gotoStartOfSentence(false);
}

它工作正常,除非它找到一个以“.”结尾的段落,即一个句点和其后的一个或多个空格。在这种情况下,它进入无限循环执行

 while (moreSentencesOO)
...
moreSentencesOO = xSentenceCursor.gotoNextSentence(false);

无休无止。我对 OpenOffice API 不太熟练,我被困在这里了。有什么想法吗?

谢谢。

<小时/>

编辑:我有一个有点尴尬的补丁,包括检查光标的当前位置,如果它在两次迭代之间没有前进,则跳转到下一段:

    while (moreParagraphsOO) {
while (moreSentencesOO) {

/**********************************/
int previousPosX = xTextViewCursor.getPosition().X;
int previousPosY = xTextViewCursor.getPosition().Y;
/*********************************/

xSentenceCursor.gotoEndOfSentence(true);
textSentence = xSentenceCursor.getString();
xTextViewCursor.gotoRange(xSentenceCursor.getStart(), false);
xTextViewCursor.gotoRange(xSentenceCursor.getEnd(), true);
if (!textSentence.equals("")) {
return textSentence;
}

moreSentencesOO = xSentenceCursor.gotoNextSentence(false);

/**********************************/
if (previousPosX == xTextViewCursor.getPosition().X &&
previousPosY == xTextViewCursor.getPosition().Y){
xParagraphCursor.gotoNextParagraph(false);
}
/**********************************/
}
moreParagraphsOO = xParagraphCursor.gotoNextParagraph(false);
moreSentencesOO = xSentenceCursor.gotoStartOfSentence(false);
}

它似乎有效,但我不确定它是否会带来 future 的问题。我更喜欢“优雅”的解决方案。

最佳答案

根据gotoNextSentence() ,只有当光标移动时它才应该返回 true,所以这是一个错误。考虑filing a report .

问题似乎发生在 isEndOfSentence() 时但不是isStartOfSentence() 。因此,请测试它而不是 getPosition()

这是 Andrew Pitonyak 的基本宏,我对其进行了修改以包含此修复程序。

Sub CountSentences
oCursor = ThisComponent.Text.createTextCursor()
oCursor.gotoStart(False)
Do
nSentences = nSentences + 1
If oCursor.isEndOfSentence() And Not oCursor.isStartOfSentence() Then
oCursor.goRight(1, False)
End If
Loop While oCursor.gotoNextSentence(False)
MsgBox nSentences & " sentences."
End Sub

关于java - OpenOffice xSentenceCursor 卡在段落末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48824337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com