在之前的文章《使用js要如何計(jì)算元素的位置》中,我們介紹了獲取相對(duì)于瀏覽器視窗的絕對(duì)位置、相對(duì)于父節(jié)點(diǎn)或 body 元素的偏移位置的方法。這次我們繼續(xù)javascript的學(xué)習(xí),介紹一下判斷字符串中是否存在指定子串的方法。
在javascript中有多種方法可以判斷指定子串是否存在,例如通過獲取子串在字符串的第一次或最后一次出現(xiàn)位置,然后判斷該出現(xiàn)位置是否真是存在,即是否有正整數(shù)值;如果有則該指定子串是存在的。
如何才能獲取到子串在字符串的第一次或最后一次出現(xiàn)位置?我們看看下面一個(gè)例子:
var str = "How do you do!"; //獲取子串“do”在str字符串中第一次出現(xiàn)的位置 var index=str.indexOf("do"); console.log("'do'在str字符串中第一次出現(xiàn)的位置是:"+index);
輸出結(jié)果:
因?yàn)樽址恢闷鹗加?0,而不是 1;所以我們使用str.indexOf("do")
所獲得的第一次出現(xiàn)位置為4。
在看看下面一個(gè)例子:
var str = "How do you do!"; //獲取子串“do”在str字符串中最后一次出現(xiàn)的位置 var lastindex=str.lastIndexOf("do"); console.log("'do'在str字符串中最后一次出現(xiàn)的位置是:"+lastindex);
輸出結(jié)果:
可以看出,使用str.lastIndexOf("do")
所獲得的最后一次出現(xiàn)位置為11。
因?yàn)樽哟癲o”是存在的(且存在多個(gè)),所以無論是第一次出現(xiàn)位置,還是最后一次出現(xiàn)位置都有正值。
我們看看不存在的情況:
var str = "How do you do!"; //獲取子串“do”在str字符串中最后一次出現(xiàn)的位置 var index=str.indexOf("de"); var lastindex=str.lastIndexOf("de"); console.log("'de'在str字符串中第一次出現(xiàn)的位置是:"+index); console.log("'de'在str字符串中最后一次出現(xiàn)的位置是:"+lastindex);
輸出結(jié)果:
可以看出,如果子串不存在,那么無論是第一次出現(xiàn)位置,還是最后一次出現(xiàn)位置都返回-1
。
根據(jù)這個(gè),我們來實(shí)現(xiàn)給定一個(gè)子串,判斷該子串是否存在的功能函數(shù):
function a(str1,str2){ var index=str1.indexOf(str2); var lastindex=str1.lastIndexOf(str2); if(index!=-1){ console.log("第一次出現(xiàn)的位置是:"+index+" ,因此 子串 “"+str2+"” 是存在的"); }else{ console.log("第一次出現(xiàn)的位置是:"+index+" ,因此 子串 “"+str2+"” 是不存在的"); } if(lastindex!=-1){ console.log("最后一次出現(xiàn)的位置是:"+lastindex+" ,因此 子串 “"+str2+"” 是存在的"); }else{ console.log("最后一次出現(xiàn)的位置是:"+lastindex+" ,因此 子串 “"+str2+"” 是不存在的"); } }
設(shè)置需要檢索的字符串和子串,調(diào)用a(str1,str2)函數(shù)來判斷:
var str = "How do you do!"; a(str,"do"); a(str,"de");
輸出結(jié)果:
好了,就說到這里了,有需要的可以看:javascript高級(jí)教程