google-apps-script - Google App Script replaceText仅替换第一次出现的匹配字符串
问题描述
我想使用 google appscript 替换我的 google doc 上的文本以将其转换为 PDF。但问题是函数 replaceText(textToReplace, newText); 只需删除每次出现的匹配文本。我只想删除第一次出现。怎么做?
解决方案
通过在该元素上调用该replaceText
方法,可以将该方法的范围限制在该元素上。但是,如果找到文本的第一段包含多个实例,这将无济于事:它们都将被替换。
相反,使用findText
查找第一个匹配项,然后调用deleteText
andinsertText
执行替换。
// replaces the first occurrence of old
function replaceFirst(old, replacement) {
var body = DocumentApp.getActiveDocument().getBody();
var found = body.findText(old);
if (found) {
var start = found.getStartOffset();
var end = found.getEndOffsetInclusive();
var text = found.getElement().asText();
text.deleteText(start, end);
text.insertText(start, replacement);
}
}
如果您认为这应该更容易,那么您并不孤单。
推荐阅读
- amazon-web-services - AWS Amplify 部署:ERR_CONNECTION_RESET
- xml - XSLT 按项目值过滤
- python - 我如何让脚本等待元素加载硒
- outlook - Outlook VSTO 正确处理 SelectionChange(当前双击崩溃插件)
- asp.net - 在从 net.tcp 协议连接到 WCF 的端点处侦听的问题
- gatsby - Gatsby graphql 或两个不同字段上的条件
- django - 如何修复 django 上的未绑定本地错误?
- azure - Azure - 从管道中排除 Azure 功能项目
- firebase - 在 Firebase 函数中为实时数据库使用 onWrite 触发器
- c++ - vector_name、vector_name.begin() 和 (vector_name + vector_name.size())、vector_name.end() 有什么区别?