google-apps-script - 计算单词匹配
问题描述
这一直让我发疯 - 看起来应该很简单,但我找不到如何让它工作。
在 Apps 脚本中,我有一个字符串(取自单元格公式),并且想要计算某个单词或短语出现的次数。我认为 match 应该这样做,但我无法让它与变量一起使用。只有直接输入。有没有办法使用变量来做到这一点?
我看过正则表达式,但谷歌页面上没有太多内容。这可能是我最好的选择,虽然我不明白。
function myFunction() {
var str = "'=IFERROR(IF('Train Station'!D154 ='A','A: Good - Performing well',
IF('Train Station'!D154='B','B: OK',
IF('Train Station'!D154='C','C: Do Better',
IF('Train Station'!D154='D','D: Give Up')))),'')'";
// var searchfor = '/'+'Train'+'/g';
// var regex = new RegExp(searchfor)
// var answer = RegExp(searchfor,str). //str.match(/+searchfor+/g).length;
var answer = str.match(/Train/g).length
Logger.log(answer)
}
编辑/更新
越来越近。RegExp 似乎是我需要的(没有 /s\g*!!? 我担心的所有东西)。现在我只需要管理错误发生的情况:无法读取 null 的属性“长度”。
var searchfor = 'Train';
var regex = str.match(new RegExp(searchfor, "g")).length
Logger.log(regex)
我打算使用这个项目来推进这个项目,If regex == 4 then
但空值正在赢得这场战斗。目前。
成功!!
var regex = (str.match(new RegExp(searchfor, "g"))||[]).length
我什至不会想到我在这上面花了多少时间。希望有一天有人会发现这很有帮助。
str
是要查看的字符串,searchfor
是要查找的文本,"g"
标志(全局),||[]
如果结果为 null,则返回 0。
感谢所有为我看这个的人。
解决方案
试试这种方式:
function myFunction() {
var str = "'=IFERROR(IF('Train Station'!D154 ='A','A: Good - Performing well'IF('Train Station'!D154='B','B: OK',IF('Train Station'!D154='C','C: Do Better',IF('Train Station'!D154='D','D: Give Up'),'')'";
// var searchfor = '/'+'Train'+'/g';
// var regex = new RegExp(searchfor)
// var answer = RegExp(searchfor,str). //str.match(/+searchfor+/g).length;
var answer = str.match(/Train/g).length
Logger.log(answer)
}
推荐阅读
- python - 如何通过 Python API 使用 Google Drive v3 API 来限制编辑者共享电子表格?
- jquery - 如何将以前上传的文件添加到新文件 - jQuery
- excel - 我需要显示一个消息框,上面写着“请选择最多 8 个数据”。当用户在工作表中选择超过 8 个单元格时
- android - Google Api 错误:permissionDeclarationRequiresUpdate
- c++ - 运算符重载+动态矩阵
- angular - 为什么组合的可观察对象在使用主题时不更新模板,或者它们在 ngAfterContentInit 之后发出
- java - CompletableFuture 强制重用线程
- oracle - 如何将整数值存储到sql表中
- typescript - 打字稿导入/导出对象和传播
- android - 如何将 Flutter 上的图像分享给其他应用程序