在之前的文章《js字符串學(xué)習(xí)之怎么返回給定下標(biāo)間的子串》中,我們介紹了截取指定下標(biāo)位置間字符串,并返回被提取的部分(子串)的方法。這次我們繼續(xù)JavaScript字符串學(xué)習(xí),了解另一種截取字符串方法,感興趣的朋友可以學(xué)習(xí)了解一下~
本文的主題是介紹一下按照指定長度截取字符串的方法,然后利用這種方法看看如何獲取文件的擴(kuò)展名。
首先我們來看看要如何截取指定長度的子串并返回呢?下面給大家具體介紹一下。
我們來看看一個(gè)例子:
var str="Hello world!"; var n=str.substr(2,3) console.log(n);
輸出結(jié)果:
可以看出:我們使用str.substr(2,3)
從第三字符開始,截取了3個(gè)字符,因此返回的子串為“llo
”。
我們來了解一下substr()方法。
str.substr(start,length)
方法能夠根據(jù)指定長度來截取子字符串。它包含兩個(gè)參數(shù),第一個(gè)參數(shù)start
不可省略,表示準(zhǔn)備截取的子字符串起始下標(biāo);第二個(gè)參數(shù)length
可省略,表示截取的長度,即需要截取的字符數(shù)。
如果省略第二個(gè)參數(shù)length
,那么就會(huì)從start開始,截取后面全部的字符。
var str="Hello world!"; var n=str.substr(2) console.log(n);
輸出結(jié)果:
如果如果第一個(gè)參數(shù)start
為負(fù)值,則表示從字符串的尾部開始計(jì)算下標(biāo)位置,即 -1表示最后一個(gè)字符,-2 表示倒數(shù)第二個(gè)字符,以此類推。(這對于左側(cè)字符長度不固定時(shí)非常有用。)
var str="Hello world!"; var n1=str.substr(-1,1); var n2=str.substr(-2,1); var n3=str.substr(-3,2); console.log(n1); console.log(n2); console.log(n3);
輸出結(jié)果:
通過上文,我們知道可以使用substr()方法來截取指定長度子串,并返回該子串。下面我們來看看利用這種方法怎樣來獲取文件擴(kuò)展名。
我們可以使用substr()和lastIndexOf()方法獲取文件的擴(kuò)展名,例如有下面一個(gè)文件url
../img/1.png
使用下面語句就可獲取文件的擴(kuò)展名:
var str="../img/1.png"; var b = str.substr(str.lastIndexOf(".") ,4); //截取最后一個(gè)點(diǎn)號開始4個(gè)字符 console.log(b); //返回子字符串“.png”
分析:使用str.lastIndexOf(".")
可以獲取字符“.”最后一次的出現(xiàn)位置,然后將其作為substr()方法的第一個(gè)參數(shù),指定截取字符串的開始位置。因?yàn)閿U(kuò)展名“.png”有四個(gè)字符,因此設(shè)置substr()方法的第二個(gè)參數(shù)為4即可。
輸出結(jié)果:
如果只想獲取到“png”,那么可以在 str.lastIndexOf(".")的基礎(chǔ)上加1:
var str="../img/1.png"; var b = str.substr(str.lastIndexOf(".")+1 ,3); //截取最后一個(gè)點(diǎn)號后3個(gè)字符 console.log(b); //返回子字符串“png”
輸出結(jié)果:
這是知道擴(kuò)展名的長度,但有時(shí) 擴(kuò)展名的長度是不固定的,那么我們就可以省略substr()方法的第二個(gè)參數(shù),直接獲取字符“.”后全部字符即可:
var str="../img/1.png"; var b = str.substr(str.lastIndexOf(".")+1 ); console.log(b); var str="../img/1.jpeg"; var b = str.substr(str.lastIndexOf(".")+1 ); console.log(b);
輸出結(jié)果:
好了,就說到這里了,有需要的可以看:javascript高級教程