按照这里提供的解决方案,我发现以下公式可以计算在某个单词之前的字符数:
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
来做到这一点?
非常感谢您的帮助和指导!
答案 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)