JS中查找一个字符串中所有子串的位置
2017-02-09 17:08
495 查看
通过循环调用indexOf()或lastIndexOf()来找到所有匹配的子字符串。
上面两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置(如果没有找到子字符串,则返回-1)。这两个方法的区别在于:indexOf()方法从字符串的开头向后搜索子字符串,而lastIndexOf()方法是从字符串的末尾向前搜索子字符串。
这两个方法都可以接收可选的第二个参数,表示从字符串中的那个位置开始搜索。换句话说,indexOf()会从该参数指定的位置向后搜索,忽略该位置之前的所有字符;lastIndexOf()类似。
这个例子通过不断增加indexOf()方法开始查找的位置,遍历了一个长字符串。在循环之外,首先找到了”o”在字符串中的初始位置;而进入循环后,则每次都给indexOf()传递上一次的位置加1。这样就确保了每次新搜索都从上一次找到的子字符串的后面开始。每次搜索返回的位置被保存在数组positions中,以便将来使用。
上面两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置(如果没有找到子字符串,则返回-1)。这两个方法的区别在于:indexOf()方法从字符串的开头向后搜索子字符串,而lastIndexOf()方法是从字符串的末尾向前搜索子字符串。
这两个方法都可以接收可选的第二个参数,表示从字符串中的那个位置开始搜索。换句话说,indexOf()会从该参数指定的位置向后搜索,忽略该位置之前的所有字符;lastIndexOf()类似。
/* * 查找一个字符串中的所有子串的位置 */ var str = "I think of other ages that floated upon the stream of life and love and death"; var positions = new Array(); function searchSubStr(str,subStr){ var pos = str.indexOf(subStr); while(pos>-1){ positions.push(pos); pos = str.indexOf(subStr,pos+1); } } searchSubStr(str,"o"); alert(positions);//8,11,29,37,51,64
这个例子通过不断增加indexOf()方法开始查找的位置,遍历了一个长字符串。在循环之外,首先找到了”o”在字符串中的初始位置;而进入循环后,则每次都给indexOf()传递上一次的位置加1。这样就确保了每次新搜索都从上一次找到的子字符串的后面开始。每次搜索返回的位置被保存在数组positions中,以便将来使用。
相关文章推荐
- C# 找出一个子串在另一字符串中出现的所有位置
- Java查找一个字符串中所有匹配某正则的子串
- 程序员面试金典: 9.11 排序与查找 11.1编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置。
- 查找一个字符串在另一个字符串中出现的所有位置
- 给定一个字符串,判断该字符串中是否包含某个子串.如果包含, 求出子串的所有出现位置
- PHP - Manual手册 - CLXI. String 字符串处理函数 - strpos查找一个字符串第一次出现的位置
- C# 3.0 Cookbook:一、字符与字符串处理(3):在一个字符串内寻找另一个字符串出现的所有位置
- 一个一万字长的连续字符串,找出其所有子串,并统计子串的出现次数
- 实现一个字符串查找子串的函数
- Python获取一个字符串所有连续子串
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 在一个数据库中的所有表里查找一个字符串
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 在一个大串中查找和另外一个字符串是anagram的子串
- 《程序员面试题精选》05.输出一个字符串的所有子串
- 利用Collections工具类查找一个字符串在字符串数组里的位置即其角标
- 算法4.1 在一个字符串寻找子串,并返回位置
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 查找某字符串在另外一个字符串中最后出现的位置
- 获得子串在一个字符串中首次出现的位置