当前位置: 首页 > 面试题库 >

如何在JavaScript中找到一个字符串在另一个字符串中所有出现的索引?

黄磊
2023-03-14
问题内容

我试图在不区分大小写的另一个字符串中查找一个html" target="_blank">字符串所有出现的位置。

例如,给定字符串:

我学会了在黎巴嫩玩四弦琴。

和搜索字符串le,我想获取数组:

[2, 25, 27, 33]

这两个字符串都是变量-即,我无法对它们的值进行硬编码。

我认为对于正则表达式来说这是一件容易的事,但是在努力寻找一个可行的表达式后,我却没有运气。

我找到了使用来完成此操作的示例.indexOf(),但是肯定有一种更简洁的方法可以完成此操作吗?


问题答案:

var str = “I learned to play the Ukulele in Lebanon.”
var regex = /le/gi, result, indices = [];
while ( (result = regex.exec(str)) ) {
indices.push(result.index);
}


更新

我未能在原始问题中发现搜索字符串需要是一个变量。我编写了另一个版本来处理使用的这种情况indexOf,因此您回到了起点。正如Wrikken在评论中所指出的那样,要对具有正则表达式的一般情况执行此操作,您需要转义特殊的正则表达式字符,这时我认为正则表达式解决方案变得比其价值更令人头疼。

function getIndicesOf(searchStr, str, caseSensitive) {

    var searchStrLen = searchStr.length;

    if (searchStrLen == 0) {

        return [];

    }

    var startIndex = 0, index, indices = [];

    if (!caseSensitive) {

        str = str.toLowerCase();

        searchStr = searchStr.toLowerCase();

    }

    while ((index = str.indexOf(searchStr, startIndex)) > -1) {

        indices.push(index);

        startIndex = index + searchStrLen;

    }

    return indices;

}



var indices = getIndicesOf("le", "I learned to play the Ukulele in Lebanon.");



document.getElementById("output").innerHTML = indices + "";


<div id="output"></div>


 类似资料:
  • 本文向大家介绍在C ++中查找一个字符串中所有出现的索引,包括了在C ++中查找一个字符串中所有出现的索引的使用技巧和注意事项,需要的朋友参考一下 假设我们有字符串str和另一个子字符串sub_str,我们必须找到str中所有出现的sub_str的索引。假设str为“ aabbababaabbbabbabaaabba”,sub_str为“ abb”,则索引将为1 9 13 18。 为了解决这个问题

  • 问题内容: 除了以下内容外,我想要一种有效的方法来在Python中将一个字符串附加到另一个字符串。 有什么好的内置方法可以使用吗? 问题答案: 如果你仅对一个字符串有一个引用,并且将另一个字符串连接到末尾,则CPython现在会对此进行特殊处理,并尝试在适当位置扩展该字符串。 最终结果是将操作摊销O(n)。 例如 过去是O(n ^ 2),但现在是O(n)。 从源(bytesobject.c): 凭

  • 我有两个字符串str1和str2。我试图用字符把一些字母从一个字符串复制到另一个字符串。我知道我可以使用字符串复制,但我想要一些字符,而不是全部字符。 在Java中,如何将子字符串从一个字符串复制到另一个字符串?

  • 例如: 字符串1=helloworld字符串2=asdfuvjerhelloworld 这应该是真的。 另一个例子:字符串1=helloworld字符串2=lshewodxzr 这也应该是真的。 所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。

  • 如何检查一个字符串是否在另一个字符串中,但匹配项需要在前面,而不是中间或最后。例如,a="

  • 本文向大家介绍统计某一字符或字符串在另一个字符串中出现的次数相关面试题,主要包含被问及统计某一字符或字符串在另一个字符串中出现的次数时的应答技巧和注意事项,需要的朋友参考一下