此篇脑图请戳[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