你好,所以我正在努力解决这一个练习。并尝试两种方法:直接console.log字符串.indexOf(subString(和使用函数计算字符串上特定字符/单词的出现次数,然后返回两个不同的值。为什么?这是代码:
const longText = `This is a very very long text. Do you understand how very long is this? Good for yah!`
const word = "very"
console.log(longText.indexOf(word));
function checkWord(longText, position) {
var n = 0;
var position = 0;
while (true) {
position = longText.indexOf(word, position)
if (position != -1) {
n++;
position += word.length;
} else {
break;
}
}
return n;
}
console.log(checkWord(longText, word));
// Expected output:
//> 10
//> 3
longText.indexOf(word)
不返回出现次数
它返回第一次出现的索引(在本例中为第11个字符(。由于字符串的字符从索引0开始,这意味着它从索引10开始。
因此,不完全确定您要做什么,但您的代码似乎正在计算word
发生的位置(longText.indexOf(word)
(和n
发生的次数。你这样做似乎是故意的,因为我可以看到你正在计算字符串最后一次找到的位置,将单词的长度添加到当前位置,然后从该位置再次搜索作为新的起始位置。。。position = longText.indexOf(word, position)
尽管console.log(checkWord(longText, word))
这里的单词是一个字符串,但是
// writing in typescript
function checkWord(longText: string, position: string) {
var n = 0;
var position = 0;
您有一个名为position的变量,其名称与参数相同。你应该避免这样做,因为这会引起混乱。。。就像我试图理解一样。
function checkWord(longText: string, indexWord: string) {
var n = 0;
var position = 0;
while (true) {
position = longText.indexOf(indexWord, position);
if (position != -1) {
n++;
position += indexWord.length;
} else {
break;
}
}
return n;
}
这就是功能应该是什么。
针对您看到的结果,10
表示单词第一次被找到的位置的字符索引,3
表示单词在字符串中被找到的次数。