基本包装类型:就是把简单数据类型包装成了复杂数据类型,这样基本数据类型就有了属性和方法
在JS中,还有三个基本包装类型:String,Number,Boolean
一.字符串的不可变性
指的是里面的值不可变,虽然看上去可以改变内容,但其实是在内存中又新开辟了一个空间,地址发生了改变,因此不要过多定义字符串类型的变量。
字符串的所有方法,都不会改变字符串本身(字符串是不可变的),因此操作完成会返回一个新的字符串
1.根据字符返回位置
方法名 | 说明 |
---|---|
indexOf(‘要查找的字符’,开始的位置) | 返回指定内容在原字符串中的位置,如果找不到就返回-1,开始的位置就是index索引号(可以省略) |
lastIndexOf() | 从后往前找,找第一个匹配的 |
案例:找出字符串oabcoefoxyozzopp中’o’出现的位置和总次数
var str = 'oabcoefoxyozzopp';
index = str.indexOf('o');
var num = 0;
while(index !== -1){
console.log(index);
num++;
index = str.indexOf('o',index+1);
}
console.log('o出现的次数是:' + num);
2.根据位置返回字符(重点)
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符 | str.charAt(0) |
charCodeAt(index) | 返回指定位置的ASCII码,目的在于判断用户按下了哪个键 | str.charAt(0) |
str[index] | 返回指定位置处字符 | HTML5,IE+8支持 和charAt()等效 |
var str = 'andy';
for(var i=0;i<str.length;i++){
console.log(str.charAt(i));
}
注意:判断一个对象是否有某属性,用对象名[‘属性名’]来调用
案例:找出字符串oabcoefoxyozzopp中’o’出现次数最多的字符,并统计其次数
- 核心算法:利用charAt()遍历这个字符串
- 把每个字符串作为一个属性存储给对象,如果对象中没有该属性,则初始为1;若有则+1
- 遍历对象,得到最大值和该字符
var str = 'oabcoefoxyozzopp';
var o = {};
for(var i =0;i<str.length;i++){
var chars = str.charAt(i);
if(o[chars]){
o[chars]++;
}else{
o[chars] = 1;
}
}
// 遍历对象
var max = 0;
var ch = '';
for(var k in o){ // k得到的是属性名,o[k]得到的是属性值
if(o[k] > max){
max = o[k];
ch = k;
}
}
console.log('出现最多的字符是:' + ch+ ' 个数为:'+ max);
3.字符串的常用操作方法
方法名 | 说明 |
---|---|
concat(str1,str2…) | concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用 |
substr(start,length) | 从start位置开始(索引号),length取的个数 |
replace(’被替换的字符‘,‘替换为的字符’) | 替换时只会替换第一个字符 |
split(’分隔符’) | 将字符串转换为数组。分隔符的使用取决于字符串中用什么隔开,若没有隔开,则视为数组中的一整个元素 |
var str1 = 'red,pink,blue';
console.log(str1.split(',')); // 输出[red,pink,blue]
var str1 = 'red&pink&blue';
console.log(str1.split('&')); // 输出[red,pink,blue]
案例:将字符串oabcoefoxyozzopp中所有’o’替换为’*'
var str = 'oabcoefoxyozzopp';
while(str.indexOf('o') !== -1){
str = str.replace('o','*');
}
console.log(str);