JavaScript|js内置对象(String)

内置对象(String) 1.基本包装类型

//基本包装类型 var str = '122123123'; console.log(str.length); // 对象才有属性和方法,复杂数据类型才有属性和方法 // 简单的数据类型为什么会有length属性呢 // 基本类型包装类型,就是把简单的数据类型,包装成复杂的数据类型// 1.简单类型包装为复杂的数据类型 var temp = new String('andy'); // 2.把临时变量的值给str str = temp ; // 3.销毁这个临时变量 temp = null;

2.字符串的不可变
字符串的不可变指的是里面的值不可变,看上去内容改变了,但实际上是地址改变了.内存中开辟了一个内存空间;
var str = 'dsfadsf'; str = '123456789'; // 当重新给str赋值的时候,常量'dsfadsf'不会被修改,依然存在内存中 // 重新给字符串赋值,会在新的内存中开辟空间,这个特点就是字符串的不可变 // 由于字符串的不可变,在大量拼接字符串的时候会有效率问题 var str = ''; for (var i = 0; i < 10000; i++){ str += i; } //这个结果需要花费大量时间来显示,因为需要不断开辟新的空间 console.log(str);

3.根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串;
1.indexOf(‘要查找的字符’,开始的位置):返回指定内容在原来字符串中的位置,如果找不到就返回-1,开始的位置是index索引号;
lastindexOf():从后往前找,只找第一个匹配的;
//查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数 var str = "abcoefoxyozzopp"; var index = str.indexOf('o'); var num = 0; for (var i = 0 ; i < str.length; i++){ while(index !== -1){ console.log(index); //3 6 9 12 num++; index = str.indexOf('o', index + 1); } } console.log('o出现的次数:'+num); //o出现的次数:4

4.根据字符串返回字符
1.charAt(index) 返回指定位置的字符(index字符串的索引号);
2.charCode(index) 获取指定位置处字符的ASCII码(index索引号);
3.str[index] 获取指定位置处字符 ,H5新增的;
判断字符串中出现最多的字符,并判断次数
// 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数 var str = 'abcoefoxyozzopp'; // 创建一个空对象来存储每一个字符(键)和对应的次数(值) var o = {}; for (var i = 0 ; i < str.length; i++){ //console.log(str.charAt(i)); //每循环一次 获取到字符串的每一个值 var chars = str.charAt(i); ; // 开始的时候是空对象,o[chars]这个属性值(字符次数为0) //如果对像里边 // console.log(o[chars]); if (o[chars]){ o[chars]++; } //进行下边语句o[chars]=0 ,证明之前这个键在对像里没有,o[chars]=1说明 这个字符存储到对象里边一次 else { o[chars] = 1; } // console.log(o[chars]); } // 遍历对象 var max = 0; //声明一个空字符串来存放出现最多的字符; var a = ''; for (var k in o){ if(o[k] > max){ max = o[k]; //o[k] 是值-----字符出现的次数 a = k; //k是键-----z字符串里边每一个字符名 } } console.log(max); //4 console.log('最多的字符是'+ a); //最多的字符是o

5.字符串常用的方法
1.concat(str1,str2,…) 用于连接两个或多个字符串;
【JavaScript|js内置对象(String)】2.substr(start,length) 从start位置开始(索引),length取个数;
3.slice(start,end) 从start(索引)位置开始,截取到end(索引)位置,end取不到;
4.substring(start,end) 从start索引开始,截取到end位置,end取不到,不接受负数;
5.toUpperCase() 转换大写;
6.toLowerCase() 转换小写;
// concat()方法是用于两个或多个字符串,拼接字符串 等于+ + var str = '123456789'; console.log(str.concat('absdsf')); //123456789absdsf// substr(star,length)方法是从star 位置开始(索引号) length是个数, console.log(str.substr(1,3)); //234 // slice(start,end) 方法是从start开始,截取到end结束,end娶不到,都是索引号 console.log(str.slice(2,5)); //345 不包括结束的那个索引 // substring(start,end)方法从start开始,end结束,end娶不到,不接受负数 console.log(str.substring(2,5)); //345// 字符串转换大小写 // toUpperCase() 转换大写toLowerCase() 转换小写 var str1 = 'abcdefg'; console.log(str1.toUpperCase()); //返回一个新的大写字符串ABCDEFG console.log(str1); //检测原数组是否变化 abcdefg var str2 = 'BBBBBBBBBBBBBB'; console.log(str2.toLowerCase()); //返回一个小写字符串 bbbbbbbbbbbbbb console.log(str2); //检测是否影响原来字符串 BBBBBBBBBBBBBB

7.replace() 方法 用于在字符串中用一些字符替换另外一些字符;
// 替换字符 replace ('被替换的字符','替换为的字符') 只会替换第一个字符 var str = 'abcabcabc'; console.log(str.replace('a','b')); // bbcabcabc // 有一个字符串'abcabcaaaaa'把所有a替换为& var str1 = 'abcabcaaaaa'; while (str1.indexOf('a') !== -1){ str1 = str1.replace('a','&'); } console.log(str1); //&bc&bc&&&&&

8.split(‘分隔符’) 用于切分字符串,可以将字符串分为数组,反回一个新数组;
var str = '121212121'; console.log(str.split('2')); //(5) ["1", "1", "1", "1", "1"] var str1 = '1&2&3&4&5'; console.log(str1.split('&')); //(5) ["1", "2", "3", "4", "5"]

6.判断字符串的字节长度
function reByteslen(target){ var count = 0; for(var i = 0 ; i < target.length; i++){ if(target.charCodeAt(i) <= 255){ count++; }else if(target.charCodeAt(i) > 255){ count += 2; } } //打印字节长度 console.log(count); } reByteslen('我是一个帅哥'); //12 reByteslen('haoareyou'); //9

    推荐阅读