1. 程式人生 > >JS中查詢一個字串中所有子串的位置

JS中查詢一個字串中所有子串的位置

  通過迴圈呼叫indexOf()或lastIndexOf()來找到所有匹配的子字串。
  上面兩個方法都是從一個字串中搜索給定的子字串,然後返回子字串的位置(如果沒有找到子字串,則返回-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中,以便將來使用。

相關推薦

JS查詢一個字串所有位置

  通過迴圈呼叫indexOf()或lastIndexOf()來找到所有匹配的子字串。   上面兩個方法都是從一個字串中搜索給定的子字串,然後返回子字串的位置(如果沒有找到子字串,則返回-1)。這兩個方法的區別在於:indexOf()方法從字串的開頭向後搜尋子

JS實現去除一個字串所有標點和空格

這是今天做練習的時候碰到的。 有兩種辦法:一是先將要處理的字串分割成陣列,再用filter濾去陣列中的標點和空格(filter對於回撥函式返回true的項會保留在陣列中,返回false的會被濾出陣列),最後再把陣列轉成字串。下面是實現方法: function

查詢一個字串出現頻率最高的字元

程式碼: let a='hhhhweeowiohhhlbbccdd'; a=a.split(''); // console.log(a instanceof Array); function findRes(){ let r

查詢一個字串包含有幾個指定字串的數量

public class test{ public static void main(String[] args){ String str = "abcguddcabddgudddgudd"; String s = "gudd"; // 指

【C語言】模擬實現strchr函式.即在一個字串查詢一個字元第一次出現的位置並返回

//模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回 #include <stdio.h> //#include <string.h> #includ

字串查詢最長迴文完整程式碼

#include <stdio.h> #include <string.h> #include <malloc.h> int Min(int a,int b) { return ((a-b)?b:a); } char* huiw

【c語言】模擬實現strchr函式,功能:在一個字串查詢一個字元第一次出現的位置,如果沒有出現返回NULL

// 模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char cons

Find All Anagrams in a String給定字串s和非空字串p,找出p是s中點的所有

LeetCode438號問題。 問題描述:給定一個字串s和一個非空字串p,找出p中的所有是s的anagrams字串的子串,返回這些子串的起始索引。 s=”cbaebabacd” p=”abc” 則返回的是[0,6] 位置0 cba,位置6 bac也就是不考

如何查詢一個字串重複次數最多的字元,返回這個字元的個數和字元

{        string str ="1232143546534135164161";        foreach(char c in str)        ...{            Check(c);        }        char maxChar = Char.MinValue;

【每日一題】查詢一個字串第一個只出現兩次的字元

題目:查詢一個字串中第一個只出現兩次的字元。比如:“abcdefabcdefabc”中第一個只出現兩次為‘d’,要求時間複雜度為O(N),空間複雜度為O(1) 解決方法:可以使用雜湊表統計每個字元出現的次數。因為字元只有256種可能,所以我們可以申請一個25

一個字串A的被定義成從A順次選出若干個字元構成的。如A=“cdaad" ,順次選1,3,5個字元就構成" cad" ,現給定兩個字串,求它們的最長共公子。 小王對既是素數又是迴文的

一個字串A的子串被定義成從A中順次選出若干個字元構成的串。如A=“cdaad" ,順次選1,3,5個字元就構成子串" cad" ,現給定兩個字串,求它們的最長共公子串。 小王對既是素數又是迴文的數特

java輸出一個字串出現次數最多的字元以及次數

1 先把字串轉化為陣列 .toCharArray 2 定義一個數組count[i] 存取每個字元 以及數量 count[i]++ 3 計算每個字元 以及值 4 取count的最大值 public class MaxString { public sta

在java判斷一個字串是否包含某個字元或字串

一、contains方法 java.lang.String.contains() 方法返回true,當且僅當此字串包含指定的char值序列 此方法返回true,如果此字串包含,否則返回false。 public static void main(String[] args

C語言常用的字串操作(分割、替換、去前後空格、遞迴實現字串反轉)

在C語言中,並沒有像java中對字串操作的封裝好的函式,在C語言中,都需要自己根據C語言函式庫來實現常用的字串操作 一、字串的分割,根據子串進行分割 #include<stdio.h>

找出字串所有-Python

給定一個字串,找出其中所有子串,這可能是暴力查找回文的第一步,如:>>> s = 'abc' >>> [s[i:i + x + 1] for x in range(l

python,求解字串所有

網上的一種解法: def cut(s: str): results = [] num = 0 # x + 1 表示子字串長度 for x in range(len(s)): # i 表示偏移量

Python判斷一個字串是否包含的幾種方法

1.使用成員操作符 in >>> s='nihao,shijie' >>> t='nihao' >>> result = t in s >

判斷一個字串裡面的出現的次數

package day12; public class TextString5 { public static void main(String[] args) { Coun

JS實現在一個字串b查詢一個字串a出現的所有位置,並且不使用字串的方法(遞迴)

問題:判斷字串A在中所有出現字串B中(長度大於1)的索引。不得使用字串方法indexof,substring等     有小夥伴在面試遇到了這個問題,乍一看如果使用使用字串方法indexof,substring,很簡單容易實現,但如果不使用這些方法,怎麼樣才能實現這個需求呢    

筆試題:在一個字串查詢字串的個數

題目:在一個字串中查詢子字串的個數。 要求:兩個字串之間以空格隔開,前一個為字串,後一個為要查詢的子字串。結果輸出字串中包含的子字串的個數。 例如:輸入:abcdssdfabc abc