也是一道經典面試題(雖然人家沒問過我)
var str = "i am 乙個好人";
str.substring(2,7);//am 乙個
str.substr(2,7);//am 乙個好人
str.substr(2,10);//am 乙個好人
str.slice(2,7);//am 乙個
str.substring(2,-2);//am 乙個好人(這是錯誤答案) 「i "(這是正確答案)
str.substr(2,-2);//空
str.slice(2,-2);//am 乙個
str.substring(-2,3);//i a
str.substr(-2,3);//好人
str.slice(-2,3);//"好個一 "(這是錯誤答案) 空(才是正確答案,因為-2相當於7)
str.slice(-2,8);//好
上面的錯誤答案就是我踩過的坑一般問題都會把substring和substr放在一起(畢竟都是字串的方法),但為了記好他們仨的引數,substring與slice一樣引數都為(start,end),我決定把substring與slice放到一起。但他倆也有不同,當substring接收到兩個引數時,它會先把兩個引數比大小,小的作為第乙個引數,大的作為第二個引數;如果其中乙個引數是負數,它會將其直接賦成0,多麼簡單粗暴啊。
substring是以兩個引數中較小乙個作為起始位置,較大的引數作為結束位置,所以str.substring(2,-2)變成了str.substring(-2,2);又因為substring乾脆將負引數都直接轉換為0,所以實際上這句話是str.substring(0,2)。
slice的話就比較正常啦~沒什麼比大小也沒什麼賦值為0的亂七八糟,但是如果是end比start靠前,他就都會報「空」,所以str.slice(-2,3)就好理解了,抽取字串的順序永遠是從左往右(╯‵□′)╯︵┻━┻
最後乙個說說與眾不同的substr,當接收的引數有負數時,substr則僅僅是將第乙個引數與字串長度相加後的結果作為第乙個引數。所以str.substr(2,-2)相當於str.substr(11,-2)。so只要第二個引數為負它就永遠返回「空」。
slice(start,end)不改變原陣列,返回改變後的陣列。
var a = [2,3,4];
var b = a;
a = a.slice(1,2);
console.log(a);//[3]
console.log(b);//[2,3,4]
splice(start,howmany,item1,item2……)改變原陣列,返回被刪除的專案。
var a = [2,3,4];
var b = a;
a.splice(1,2,666);
console.log(a);//[2, 666]
console.log(b);//[2, 666]
array.reverse()改變原陣列,返回新陣列。
var array1 = ['one', 'two', 'three'];
var reversed = array1.reverse();
console.log('reversed: ', reversed);//array ['three', 'two', 'one']
console.log('array1: ', array1);//['three', 'two', 'one']
array.concat(item1,item2……)不改變原陣列,返回新陣列。
var array1 = ['a', 'b', 'c'];
var array2 = ['d', 'e', 'f'];
console.log(array1.concat(array2));//["a", "b", "c", "d", "e", "f"]
console.log(array1);//array ["a", "b", "c"]
字元陣列與字串
字元陣列與字串 字串就是字元的序列,可看作單個資料項。定義在雙引號之間的字元組 雙引號除外 就是乙個字串常量。例 man is abviously made to think 字串變數的宣告與初始化 c語言並不支援字串資料型別。但是,它允許作為字元陣列來表示字串。因此在c語言中,字串變數就是任何合法...
字元陣列與字串
字元陣列與字串 6.3.1 字元陣列的逐個字元操作 案例6.5 從鍵盤輸入乙個字串,回車鍵結束,並將字串在螢幕上輸出。main i 0 while str x0d printf c str i printf n getch 1 字元陣列的定義 1維字元陣列,用於儲存和處理1個字串,其定義格式與1維數...
字元陣列與字串
char str 6 char str2 6 world printf s n str scanf s str2 for i 0 str i 0 i 說明 系統為了明確區分記憶體上的字串從屬關係,它會去尋找空字元,ascii嗎為0 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...