首页 > 解决方案 > 计算单词匹配

问题描述

这一直让我发疯 - 看起来应该很简单,但我找不到如何让它工作。

在 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。

感谢所有为我看这个的人。

标签: google-apps-script

解决方案


试试这种方式:

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)
}

推荐阅读