【发布时间】:2020-07-02 12:07:28
【问题描述】:
我目前有一个函数来获取一个字符串,将其分解为句子,然后提取包含用户定义关键字的句子并返回它们:
function getSentencesWithWord(word, text) {
let sentenceArray = text.replace(/([.])\s*(?=[A-Z])/g, "$1|").split("|")
return sentenceArray.filter(sentence => sentence.includes(word))
}
目前,此功能有效。但是,我需要使用此功能搜索的文本量非常大;它正在搜索大约 30 个 google 文档,每个文档最多可达 75 页,并且搜索某些术语(例如单词“the”)可能需要一分钟才能完成该功能。有没有更优化的方法来搜索和提取这么多文本?
编辑:
因为有人在 cmets 中询问,word 变量只是从 HTML 页面上的文本输入中获得的字符串,而text 变量是通过 Google Apps Script 中的此函数获得的字符串:
function getText(docID){
let doc = DocumentApp.openById(docID);
let textToSearch = doc.getBody().getText();
return textToSearch;
}
我有一个包含我需要访问的所有 google 文档 ID 的数组,我只需遍历数组并获取每个文档的文本
【问题讨论】:
-
您能分享一下
word和textvar 的情况吗?您如何获取和解析所有这些文档? -
您可以直接在
/(?<=\.)\s*(?=[A-Z])/上拆分,而不是用管道替换此空间,然后在管道上拆分,这会抑制替换命令。它假设您可以使用尚未在所有浏览器中支持的lookbehind。 -
@Kessy 我更新了解释这一点的原始帖子
-
您的问题解决了吗?如果没有,还有什么要补充的吗?
标签: javascript regex google-apps-script