字串物件三種擷取子字串方法的差異

javascript有三種從字串中擷取其子字串的方法:

string.slice(),string.substr(),string.substring()

其中string.substr()是最不一樣的,

string.substr()是藉由起始索引位置與子字串長度來擷取子字串。

語法:string.substr(start,length)

如果start是負值,會變成從字尾往前讀,

不過不是所有瀏覽器都支援,所以最好別這樣用。

除了string.substr()特別不一樣外,

剩下的string.slice()與string.substring()這兩個方法就很相像,很容易搞糊塗,

兩個方法都是藉由起始索引位置與結束索引位置來擷取子字串。

語法:string.slice(start,end) , string.substring(start,end)

語法都一樣,但兩種方法其實是有所差別的,其中一種差別是對於負值的處理。

對於string.slice()而言,當start或 end是負值時,

start或是 end 會被當成 string.length+start(or end)。

但是對於string.substring()而言,當start或 end是負值時,

start或是 end 會被當成是 0。

另一個差別是,當 start>end時 string.substring() 會自動掉換 start與end的位置,

也就是說string.substring(5,0)=string.substring(0,5),

這點在string.slice()上就不成立。

  string.slice() string.substring()
start or end <0

 

start=string.length+start or 

end=string.length+end

 

start=0 or end =0
start>end

 

 string.slice(start,end) !=string.slice(end,start)

好像有些人會直接判定此時會返回空字串,

但其實不完全對,主要是因為slice允許負值

的存在,我覺得比較完整的說法是start的位

置在end的位置後方時會返回空字串。

 

string.substring(start,end) =string.substring(end,start)

關於字串物件的其他方法可以參考部落格內的另一篇文章:字串(String)物件

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章