String類substring方法的原始碼問題

2021-09-01 08:35:35 字數 723 閱讀 4988

看string的原始碼

看到

public string substring(int beginindex, int endindex) 

if (endindex > count)

if (beginindex > endindex)

return ((beginindex == 0) && (endindex == count)) ? this :

new string(offset + beginindex, endindex - beginindex, value);

}

當時就想到2個問題,第乙個是endindex可以等於count,因為他的判定條件是index > count,第二個就是他return的是

new string(offset + beginindex, endindex - beginindex, value)
再看看這個構造方法

string(int offset, int count, char value)
也就是char value是共享的,只是調整offset和count的值來完成擷取的。

不明白這樣做的目的是什麼,有什麼好處,新截出來的字串不是有浪費空間的嫌疑?

然後查閱網上其他人的關於substring的文章

參考部落格:

發現這個substring方法還是要小心點用

slice,substr和substring的區別

首先,他們都接收兩個引數,slice和substring接收的是起始位置和結束位置 不包括結束位置 而substr接收的則是起始位置和所要返回的字串長度。直接看下面例子 1 var test hello world 2 3 alert test.slice 4,7 o w 4 alert test....

slice,substr和substring的區別

首先,他們都接收兩個引數,slice和substring接收的是起始位置和結束位置 不包括結束位置 而substr接收的則是起始位置和所要返回的字串長度。直接看下面例子 var test hello world alert test.slice 4,7 o w alert test.substrin...

slice,substr和substring的區別

首先,他們都接收兩個引數,slice和substring接收的是起始位置和結束位置 不包括結束位置 而substr接收的則是起始位置和所要返回的字串長度。直接看下面例子 1var test hello world 23alert test.slice 4,7 o w 4alert test.subs...