在使用JScript的數組的時候,我發現一個挺好玩的特性,就是它的內建對象Array的length是可以寫的。很奇怪吧?但是很好玩哦。那麼如果我改變其length會有什麼效果呢?
當我們修改Array執行個體的length屬性後,就會改變該數組的容量。
比如JScript的數組:var array = ['a', 'b', 'c'];
我們使array.length=1,數組內元素就變成了:['a'];
如果讓array.length=5,數組內元素就變成了:['a', 'b', 'c', '', '']。
// 操作都相對於原始數組進行
這個特性除了JScript外,.NET Framework中BCL類StringBuilder的執行個體也有這個特性。
比如StringBuilder的執行個體:StringBuilder strb = new StringBuilder("abc");
我們使strb.Length=1,對象內容變為:"a";
如果讓strb.Length=5,對象內容變為:"abc ";
當新的Lenght小於strb本身的Length時,對象的內容按指定的長度截斷;如果新的Length大於strb本身的Length時,系統用空格補充不足。
使用StringBuilder的這個特性,我們還可以用它來實現一個擷取指定個數空白字元串的函數:
string GetSpaces(int count)
{
StringBuilder strb = new StringBuilder(count);
strb.Length = count;
return strb.ToString();
}
// 高效清爽哦~~
當然StringBuilder這個特性我用的比較多的是,當我有一些類似:"a,b,c,d,e,"或"1;2;3;4;5;"這樣的字串,並且想獲得:"a,b,c,d,e"或"1;2;3;4;5"時。使用strb.Length = strb.Length-1就行了。
這裡有個小技巧,如果我們的字串不是StringBuilder格式,而是string格式,我們最好不要產生:"a,b,c,d,e,"或"1;2;3;4;5;"這種格式。因為這樣我們需要使用str = str.Substring(0, str.Length-1)來截斷字串,如果我們在迴圈裡面產生的格式是:",a,b,c,d,e"或";1;2;3;4;5"。那麼要得到"a,b,c,d,e" 或 "1;2;3;4;5" 就要容易些,直接str = str.Substring(1)就可以了。