目录
1. 根据字符串返回位置 indexOf('要查找的字符',起始的位置)
1. concat() 可以拼接一个或多个字符串,等效于 +
2. substr(截取初始索引位置,截取的数量) 字符串截取 重点记住这个
3. slice(start, end) 截取字符串, 参数指的都是索引, 不包含end
4. substring(start, end) 截取字符串, 参数指的都是索引, 不包含end, 和slice() 基本一致, 但是不接受赋值
一、基本包装类型
基本包装类型:就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
var str = 'nihao';
console.log(str.length);
按道理基本数据类型是不具备属性和方法的,而对象才有。但上面的代码却可以执行,是因为js会把基本数据类型转化为了复杂数据类型
执行的过程如下:
1、生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('nihao');
2、赋值给我们声明的字符变量
str = temp;
3、销毁临时变量
temp = null;
二、字符串不可变
字符串不可变,不要大量的拼接字符串
虽然看上去是内容改变,其实是地址变了,内存中开辟了一个新的空间用于存放新的字符串
var str = 'abc';
str = 'nihao';
当重新给str赋值的时候,常量'abc'并不会被修改,依然存在在内存中
重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
三、根据字符返回位置
1. 根据字符串返回位置 indexOf('要查找的字符',起始的位置)
var str = '你好啊,哈哈你也好';
console.log(str.indexOf('你'));
console.log(str.indexOf('你', 1)); //6
2. 案例:
查找字符串中相同的数出现的次数
核心算法: 先查找第一个数出现的位置 indexOf()
然后indexOf 如果返回的结果不是 -1 ,则继续查找
因为indexOf 只能查找到第一个,所以后面的查找,以ID那个是当前的索引加1,然后继续查找
var str = "abcdaefghajkioalsnb";
var index = str.indexOf('a');
var num = 0;
while (index !== -1) {
console.log(index);
num++;
index = str.indexOf('a', index + 1);
}
console.log('a出现的次数是:' + num);
四、根据位置返回字符
var str = 'afvcddgf';
1. charAt()
console.log(str.charAt(2)); // v
for (var i = 0; i < str.length; i++) {
console.log(str.charAt(i));
}
2. charCodeAt()
获取指定位置处字符的ASCII码,用来判断用户在键盘上输入的是哪一个键
console.log(str.charCodeAt(0)); //97
3. str[index] H5新增
获取指定位置处字符
console.log(str[1]); // f
4. 案例:返回字符串中出现最多的字符,并且返回次数
统计一个字符串中出现次数最多的字符,并统计其次数 'abcoefoxyozzopp'
核心思路:
1、利用charAt() 遍历这个字符串
2、把每个字符串都存储给对象,如果对象没有该属性,则赋值为1,如果存在则+1
3、遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp';
var obj = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // chars 取出来字符串里每一个字符
if (obj[chars]) { // obj[chars] 到的是属性值
obj[chars]++;
} else {
obj[chars] = 1;
}
}
console.log(obj);
var max = 0;
var ch = '';
for (var k in obj) {
// k指的是属性
// obj[k] 指的是属性值
if (obj[k] > max) {
max = obj[k];
ch = k;
}
}
console.log('最大值是:' + max);
console.log('最多的字符是:' + ch);
五、字符串的拼接和截取
1. concat() 可以拼接一个或多个字符串,等效于 +
var str = '123';
console.log(str.concat(456)); // 123456
2. substr(截取初始索引位置,截取的数量) 字符串截取 重点记住这个
var str1 = '改革春风吹满地';
console.log(str1.substr(2, 2)); // 春风
3. slice(start, end) 截取字符串, 参数指的都是索引, 不包含end
var str = '离离原上草,春风吹又生';
console.log(str.slice(2, 5));
4. substring(start, end) 截取字符串, 参数指的都是索引, 不包含end, 和slice() 基本一致, 但是不接受赋值
六、字符串中字符元素的替换
1. replace(被替换的字符,替换的字符)
字符串的替换,一次只能替换一个,如果全部替换,可以通过循环
var str = 'andy';
console.log(str.replace('a', 'b'));//bndy
案例:替换下方字符串中所有的o, 采用遍历的方法, 判断str1.indexOf() 是否等于 - 1, 如果等于说明没有这个值, 如果不等于说明有这个字符,就可以替换了
var str1 = 'abcoefoxyozzopp';
while (str1.indexOf('o') !== -1) {
str1 = str1.replace('o', '+');
}
// for (var i = 0; i < str1.length; i++) {
// if (str1.indexOf('o') !== -1) {
// str1 = str1.replace('o', '+');
// }
// if (str1[i] === 'o') {
// str1 = str1.replace('o', '+');
// }
// }
console.log(str1);
七、字符串转换为数组
字符转换为数组 split('分隔符') 与前面学过的 join() 把数组转换为字符串
var str = 'red,pink,blue';
console.log(str.split(',')); // [red,pink,blue]
var str1 = 'red&pink&blue';
console.log(str1.split('&')); //[red&pink&blue]
注意:split('')括号里的分隔符取决于字符串里的符号,如果没有符号相隔,是不能分隔的
八、字符转换为大小写
1. toUpperCase() 转换大写
var str = 'AbCdEfG';
console.log(str.toUpperCase()); // ABCDEFG
2. toLowerCase() 转换小写
var str1 = 'AbCdEfG';
console.log(str1.toLowerCase()); // abcdefg