此篇腦圖請戳[http://naotu.baidu.com/file/5bffe99e804bb037d5b9e55a68a68169?token=42130843de5e46b6]javascript
// s1是基本類型,基本類型是沒有方法的 var s1 = 'zhangsan'; var s2 = s1.substring(5); // 當調用s1.substring(5)的時候,先把s1包裝成String類型的臨時對象,再調用substring方法,最後銷燬臨時對象, 至關於: var s1 = new String('zhangsan'); var s2 = s1.substring(5); s1 = null;
var num = 18; //數值,基本類型 var num = Number('18'); //類型轉換 var num = new Number(18); //基本包裝類型,對象 // Number和Boolean基本包裝類型基本不用,使用的話可能會引發歧義。例如: var b1 = new Boolean(false); var b2 = b1 && true; // 轉換成false的五種狀況 NaN undefined null '' ,這時b1已是一個Boolean的對象了. console.log(b2); //true
字符串的不可變java
var str = 'abc'; str = 'hello'; console.log(str); // abc // 當從新給str賦值的時候,常量'abc'不會被修改,依然在內存中 // 從新給字符串賦值,會從新在內存中開闢空間,這個特色就是字符串的不可變 // 因爲字符串的不可變,在大量拼接字符串的時候會有效率問題
建立字符串對象3d
var str = new String('Hello World'); // 獲取字符串中字符的個數 console.log(str.length);
字符串對象的經常使用方法code
字符串全部的方法,都不會修改字符串自己(字符串是不可變的),操做完成會返回一個新的字符串,因此要聲明一個變量來接收返回值對象
// 1 字符方法 charAt() //獲取指定位置處字符 charCodeAt() //獲取指定位置處字符的ASCII碼 str[0] //HTML5,IE8+支持 和charAt()等效 // 2 字符串操做方法 concat() //拼接字符串,等效於+,+更經常使用 slice() //從start位置開始,截取到end位置,end取不到 substring() //從start位置開始,截取到end位置,end取不到 substr() //從start位置開始,截取length個字符 // 3 位置方法 indexOf() //返回指定內容在元字符串中的位置 lastIndexOf() //從後往前找,只找第一個匹配的 // 4 去除空白 trim() //只能去除字符串先後的空白 // 5 大小寫轉換方法 to(Locale)UpperCase() //轉換大寫 to(Locale)LowerCase() //轉換小寫 // 6 其它 search() replace() split() fromCharCode() // String.fromCharCode(101, 102, 103); //把ASCII碼轉換成字符串
案例索引
var str = new String("我愛中華人民共和國"); var newStr = str.substr(2, 2); //第一個參數是開始截取的字符索引,第二個參數截取字符的長度 console.log(newStr); // 中華
var str = 'abcoefoxyozzopp'; var index = -1; do { index = str.indexOf('o', index + 1); //第一個參數是查找的對象,第二個參數時從第幾個開始找 if (index !== -1) { console.log(index); } } while (index !== -1)
var str = 'abcoefoxyozzopp'; // abc!efoxyozzopp // 只會替換第一個找到的字符串 // str = str.replace('o', '!'); // console.log(str); var index = -1; do { index = str.indexOf('o', index + 1); if (index !== -1) { str = str.replace('o', '!'); } } while (index !== -1);
// 傳統方法1 去空格 var str = ' abc xyz a 123 '; var index = -1; do { index = str.indexOf(' '); // 關鍵點在這裏,第二個參數是每次從第幾個數字開始日後找空格,這樣前面的空格跳過了 console.log(index); if (index !== -1) { str = str.replace(' ', ''); } console.log(str); } while (index !== -1); console.log(str); //方法 2 var str = ' abc xyz a 123 '; str = str.replace(/\s*/g, ''); console.log(str); //方法3 var str = ' abc xyz a 123 '; var a = str.split(' '); console.log(a.join('')); //方法4 var str = ' abc xyz a 123 '; var res = ''; var arr = str.split(''); for (var i = 0; i < arr.length; i++) { if (arr[i] !== ' ') { res += arr[i]; } } console.log(res);
// - 判斷一個字符串中出現次數最多的字符,統計這個次數 var str = 'abcoefoxyozzopp'; var ch; //出現的字符 var num; //出現的次數 var o = {}; //在對象中,經常使用的賦值操做爲obj.a = 1 或 obj.a = 1; // 讀取值一般就用obj[a] for (var i = 0; i < str.length; i++) { var item = str.charAt(i); //給o一個item屬性,若是o裏面有這個屬性,返回true,執行o[item]++;, 若是沒有這個屬性,返回false,執行o[item] = 1(就是給o的item屬性賦值) if (o[item]) { //已經有該屬性 o[item]++; } else { //沒有該屬性 o[item] = 1; } } // console.log(o); num = 1; for (var key in o) { if (num < o[key]) { // 出現最多的次數 num = o[key]; // 出現最多的字符 ch = key; } } console.log(ch + '是出現次數最多的字符,' + '出現了' + num + '次');
bye for now!token