在javascript中查找字符串中第n个字符的出现次数 [英] Finding the nth occurrence of a character in a string in javascript
问题描述
我正在使用javascript代码来查找字符串中第n个字符的出现位置。使用 indexOf()
函数,我们可以获得第一次出现的角色。现在的挑战是获得角色的第n次出现。我能够使用下面给出的代码获得第二次出现等等:
I am working on a javascript code to find the nth occurrence of a character in a string. Using the indexOf()
function we are able to get the first occurrence of the character. Now the challenge is to get the nth occurrence of the character. I was able to get the second third occurrence and so on using the code given below:
function myFunction() {
var str = "abcdefabcddesadfasddsfsd.";
var n = str.indexOf("d");
document.write("First occurence " +n );
var n1 = str.indexOf("d",parseInt(n+1));
document.write("Second occurence " +n1 );
var n2 = str.indexOf("d",parseInt(n1+1));
document.write("Third occurence " +n2 );
var n3 = str.indexOf("d",parseInt(n2+1));
document.write("Fourth occurence " +n3);
// and so on ...
}
结果如下:
First occurence 3
Second occurence 9
Third occurence 10
Fourth occurence 14
Fifth occurence 18
Sixth occurence 19
我想要概括脚本以便我能够找到第n个字符,因为上面的代码要求我们重复脚本n次。让我知道是否有更好的方法或替代方法来做同样的事情。如果我们只是给出事件(在运行时)来获取该字符的索引会很好。
I would like to generalize the script so that I am able to find the nth occurrence of the character as the above code requires us to repeat the script n times. Let me know if there is a better method or alternative to do the same. It would be nice if we just give the occurrence (at run time) to get the index of that character.
以下是我的一些问题:
- 我们如何在JavaScript中完成?
- 是否有任何框架提供任何功能来执行相同的实现更简单的方法或在其他框架/语言中实现相同的替代方法是什么?
推荐答案
function nth_occurrence (string, char, nth) {
var first_index = string.indexOf(char);
var length_up_to_first_index = first_index + 1;
if (nth == 1) {
return first_index;
} else {
var string_after_first_occurrence = string.slice(length_up_to_first_index);
var next_occurrence = nth_occurrence(string_after_first_occurrence, char, nth - 1);
if (next_occurrence === -1) {
return -1;
} else {
return length_up_to_first_index + next_occurrence;
}
}
}
// Returns 16. The index of the third 'c' character.
nth_occurrence('aaaaacabkhjecdddchjke', 'c', 3);
// Returns -1. There is no third 'c' character.
nth_occurrence('aaaaacabkhjecdddhjke', 'c', 3);
这篇关于在javascript中查找字符串中第n个字符的出现次数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!