如何检索光标当前位于 Google Doc 中的句子?

How can I retrieve the sentence where the cursor currently resides in a Google Doc?

我希望能够获取用户当前正在编辑的句子的字符串。这应该是包含光标的句子。 现在,我知道我可以通过以下方式获取光标周围的元素:

var cursor = DocumentApp.getActiveDocument().getCursor();
var surroundingTextStr = cursor.getSurroundingText().getText();

然后用下面的正则表达式逐句查找

var pattern = /([A-Z][^\.!?]*[\.!?])/ig;
var match;
while ((match = pattern.exec(surroundingTextStr)) != null){
    // How can I check that this sentence currently holds the cursor?
}

我怎样才能检查每个句子以查看它是否包含光标?我知道通过搜索周围的文本作为字符串会删除很多位置信息,但我是否可以在文档中搜索该字符串并检查 RangeElement 和 Cursor 的位置?我真的不确定。

谢谢

因此,在我将此标记为答案之前,我更希望看到一个与 Google Apps 脚本 API 一起使用的实现。这只是一个偷偷摸摸的解决方法(阅读:作弊)。

下面是我的工作实现。

var cursor = DocumentApp.getActiveDocument().getCursor();
var surroundings = cursor.getSurroundingText();
var marker = '\u200B';  // A zero-wdith space character - i.e. a hidden marker.
cursor.insertText(marker);
var surroundingTextStr = surroundings.getText();  // Copy to string
surroundings.replaceText(marker, '');  // Remove the marker from the document.

// Build sentence pattern, allowing for marker.
var pattern = /([A-Z\u200B][^\.!?]*[\.!?])/ig;  
var match;
while ((match = pattern.exec(surroundingTextStr)[0]) != null){
  Logger.log(match);
  if (/\u200B/.test(match)){
    match = match.replace(marker, '');
    Logger.log("We found the sentence containing the cursor!");
    Logger.log(match);
  }
}

因为 API 没有简单的方法来识别光标在其段落中的位置,所以我将 zero-width Unicode 字符放置在光标旁边。

这个 Unicode 字符 \u200B 用作标记。我将周围的文本复制成句子,然后找到包含这个标记的句子。当我找到它时,我知道我找到了光标所在的句子!一定要清除文档的标记。

另一方面,如果位置 class 实现某种索引或比较位置的方法,我会很高兴。