字符串的操作方法
1. 创建字符串
两种方式, new String 或者 const str = '122';
- 值得注意的是 虽然都可以创建字符串,但通过new String实例出的字符串本身是一个objet类型
2. 字符串的转换
- 将其他类型转化为字符串
let num = 1; num.toString(); 返回一个新的值('1'),不改变数据自身 String(num); 返回一个新的值('1'),不会改变数据自身 num + ''; 返回一个新的值('1'),不会改变数据自身
3. 字符串的分割
- split(str, length) 将字符串分割为数组,接收两个可选参数,第一个参数为匹配项,第二个参数为执行数组的最大长度,方法不会改变数据本身
const str1 = '21dsa,12rer,ewd,sc'; str1.split(',',15); // 输出 ['21dsa', '12rer', 'ewd', 'sc']
4. 字符串替换
- replace(str, str1) 接收两个可选参数,str为需要匹配的字符,str1位替换字符
const str1 = '21dsa,12rer,ewd,sc'; str1.replace('', 'aaa'); // 输出 '21daaasa,12rer,ewd,sc'
5.获取字符串长度
str.length 与数字一样
6. 查询字符串
- indexOf() 与 lastIndexOf(), 返回匹配字符串第一次出现的位置,lastIndexOf从字符串末尾开始匹配
7. 返回指定位置的字符
- charAt() 与 charCodeAt() 接收一个字符串的下标为参数,并返回字符,charCodeAt返回的是字符编码值
const str = "Hello World!"; const charCode = mystr. charCodeAt(7); //111
8. 字符串匹配
- match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
const mystr = "hi,mynameisstar6,33iswho?"; const matchStr = mystr.match("33"); // { 0: "3", index: 17,input: "hi,mynameisstar6,33iswho?" }
- exec() 区别在于这个方法必须配合正则使用,且由正则调用。
- search() 检测字符串中是否包含检索字符,或匹配正则,成功则返回下标,反之返回-1,需要注意的是, 这个方法始终返回的是从字符串开头匹配到的第一次下标
9. 字符串拼接
- 可以将多个字符串做加法 str1 + str2 或 str1.concat(str2);
10. 字符串切割和提取
- 有三种可以从字符串抽取字符和切割的方法:
- 第一种:slice(start: number, end: number)函数: 两个可选参数,start为开始位置,end结束位置。 为负数时从字符串末尾开始计算,第二个参数不传时默认匹配到字符串结束。
const str1 = '21d*sa,12rer,ewd,sc'; str1.slice(-4, -1) 'd,s'
-
第二种:substring(start: number, end: number)函数:与第一种不同的是,参数不能传负值,为负时会自动转为0;
-
第三种:substr(start: number, length: number)函数:start参数可以为负数、必传,length参数为选填不传时默认抽取至字符串末尾。
const str1 = '21d*sa,12rer,ewd,sc'; str1.substr(-4); // 输出: 'd,sc'
11. 字符串大小写转换
- stying.toLowerCase(): 将字符串所有字符转化为小写。
- stying.toUpperCase(): 将字符串所有字符转为为大些
12. 字符串去除空格
- ' hello world '.trim() 方法用来删除字符串前后的所有空格 // 输出 'hello world'
13. 字符串去重
- const str = "aahhgggsssjjj"; function removeRepeat(msg){
const res=[];
let arr = msg.split("");
for(var i=0; i < arr.length; i++){
if(res.indexOf(arr[i]) == -1){
res.push(arr[i]);
}
}
return res.join("");
}
removeRepeat(str); // ahgsj
- [].filter.call('1111fdsf1dsf',(s,i,o)=>o.indexOf(s)==i).join(''); // 输出 '1fds'