如何计算某个单词在Google表格的单元格中多次出现之前的字符数?

时间:2019-06-19 08:38:42

标签: google-apps-script google-sheets google-sheets-formula

按照这里提供的解决方案,我发现以下公式可以计算在某个单词之前的字符数:

Count number of characters before a certain word in cell

=SEARCH("apple",A2)-1

我的问题如下:

如何计算单个单元格中同一单词的两次出现之间的中间字符?

找到here,以适应妮可的例子:

“我需要计算一个单词之前文本字符串中的字符数。例如,假设单词是“ Apple”。文本字符串是“我从那棵美丽的树上摘了一个苹果” 。在这种情况下,字符数为13。“

假设我的示例是:

“我从红色的apple树上摘下了apple”。

=SEARCH("apple",A2)-1公式返回直到单词“ apple”第一次出现为止的字符数。就是13。

如何通过脚本计算单词“ apple”的两次出现之间的字符数?

, from the red”的长度是多少?

还是可以通过修改公式=SEARCH("apple",A2)-1来做到这一点?

非常感谢您的帮助和指导!

4 个答案:

答案 0 :(得分:3)

搜索功能可以采用第三个参数,该参数是您要在字符串中开始搜索的位置,因此,如果找到“ apple”的第一个实例,然后从该位置加1开始运行另一个搜索,则会发现第二个实例。

第一个实例:

=search("apple", A2)

第二个实例:

=search("apple", A2, search("apple", A2) + 1)

从第一个减去第二个:

=search("apple", A2, search("apple", A2) + 1) - search("apple", A2)

要获得两者之间的长度,您必须减去“苹果”一词的长度或您要搜索的任何内容。

答案 1 :(得分:2)

如果要使用脚本执行此操作,则可以使用“ indexOf”功能。它计算从字符串开头到您输入的单词有多少个字符。 indexOf的工作方式如下:

indexOf(string, [pos])

如果您未指定任何位置,则将从头开始,否则将从您介绍的位置开始算。 话虽如此,您可以应用以下逻辑:

var string = sheet.getRange("your cell").getValues().toString();

var apple_length = "apple".length;  
var first_apple = string.indexOf("apple") + apple_length;
var second_apple = string.indexOf("apple", first_apple);

var result = second_apple - first_apple;

由于要一直计算到找到单词,因此我们需要将单词的长度添加到公式中,并将该结果用作第二个indexOf的起始位置。

有关更多信息,请选中https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

编辑

var appletree = [];
var apple_length = "apple".length;
var char_counter = 0;

while (true) {

var apple = your_string.indexOf("apple", char_counter) + apple_length;

appletree.push(apple);

char_counter = char_counter + apple;


if (char_counter >= your_string.length) 
 break;

};
};

这实际上更简单,更好,因为字符串的长度或放入多少苹果都无关紧要。

答案 2 :(得分:1)

=INDEX(LEN(SPLIT($A$1,"apple",0)))
  • SPLIT的文字是apple
  • 计算每个字符串的LEN gth
  • INDEX获取数组中的相应索引

    =INDEX(LEN(SPLIT($A$1,"apple",0)),2)
    

var str = "I plucked an apple, from the red apple tree";
var len = str.split('apple', 2).map(e=>e.length);
console.info(len);
console.info(len[1]);

答案 3 :(得分:0)

=FINDB("♥", SUBSTITUTE(A1, "apple", "♥"))-1

0