引言
在学习和工作的过程中字符串的使用很多,频繁性的使用就要求我们要记住这些,接下来就是描述常用的字符串方法。
一、字符串string是什么?
JavaScript的字符串是用’ '或" "包起来的字符。
字符串之间使用 + 号进行拼接。
- 创建字符串
1.字面量字符串
var str1= '123';
//常用此方法
2.构造函数字符串
var str2 = new String('123')
//通过构造函数创建一个字符串对象,值保存在堆中 - 字符串属性
length-属性返回字符串的长度(字符的个数)
str1.length; // 3
我们也可以通过索引访问字符串,比如:str1[0]; //1
str1["0"] //1
二、ES5字符串方法
1.charAt();
通过索引获取对应字符
var str = "abcdef";
console.log(str.charAt(2)); //c console.log(str[2]); 两种写法都可以
2.charCodeAt();
通过索引获取对应字符的unicode码值
var str = "abcdef";
console.log(str.charCodeAt(3)); //100
console.log(str.charCodeAt(10)); //不存在这个字符返回NaN
3.String.fromCharCode(unicode);
根据unicode码获取对应字符
console.log(String.fromCharCode(360001)); //繁
4.substr();
substr(); 从下标位置开始向后截取所有字符返回
substr(index,num); 从index位置开始向后截取num个字符返回
str.substr(); 截取原字符串的所有
console.log(String.fromCharCode(360001)); //繁
5.substring();
str.substring(); 截取原字符串所有
str.substring(index); 从index位置开始向后截取到end-1的字符串返回
str.substring(start,end); end小于start,end为开始下标,start为结束下标 (含头不含尾)
var str = "abcdef";
console.log(str.substring()); //abcdef
console.log(str.substring(3)) ; //def
console.log(str.substring(1, 3)); //bc
console.log(str.substring(-3)) //abcdef 索引为负数,转换为0
console.log(str.substring(5, 2)) //cde end小于start,end为开始下标,start为结束下标
console.log(str.substring(2, -5)) //ab
6.split();
str.split(); 整个字符串作为一个数组元素返回
str.split(""); 第一个字符都作为数组的元素返回
str.split(“ch”);以ch对字符串进行拆分,如果在字符串中存在这个ch, 根据ch拆分出来的字符串作为数组元素返回
var str = "abcdef";
console.log(str.split()); // [abcdef]
console.log(str.split("")); // [a,b,c,d,e,f]
console.log(str.split("c")); // [ab,def]
var str = "ab cd ef";
console.log(str.split(" ")); //[ab,cd,ef]
console.log(str.split("")); //[a,b, ,c,d, ,e,f]
7.replace();
替换
var str = "你好啊,你在tm做什么呢,有tm时间吗?";
console.log(str.replace("tm", "**"));//只能替换从左到右查找到的第一个
console.log(str.split("tm").join("**"));//全局替换
console.log(str.replace(/tm/g, "**"));
8.toLowerCase();
大写转小写
var str = "ABCDEF";
console.log(str.toLowerCase()); //abcdef
9.toUpperCase();
小写转大写
var str = "abcdef";
console.log(str.toUpperCase()); //ABCDEF
10.trim();
str.trim(); 去掉前后空格 es5 ie8不支持
var str = " abc ";
console.log(str.trim()); //abc
11.indexOf();
返回字符串中子串第一处出现的索引值,没有匹配返回-1
var str = "abcdef";
console.log(str.indexOf('a'));//0
console.log(str.indexOf('bcd'));//1
console.log(str.indexOf('g'));//-1
12. lastIndexOf();
返回字符串中子串最后出现的索引值,没有匹配返回-1
var str = "abcdefabcdef";
console.log(str.lastIndexOf('a'));//6
console.log(str.lastIndexOf('g'));//-1
13.slice();
从已有字符串中提取部分字符,返回新的字符串
var str = "abcdef";
//slice()返回的子串包括start处的字符,但不包括end处的字符
console.log(str.slice(2,3));//c
14.concat();
将一个或多个字符串合并到str1中返回合并后的新字符串
var str1 = "abc";
var str2 = "123";
var str3 = "def";
console.log(str1.concat(str2,str3)); //abc123def
console.log(str1+str2+str3); //abc123def
15.search();
匹配成功返回字符串中子串第一处出现的索引值,没有匹配返回-1
var str = "abcdef";
console.log(str.search("b"));//1
console.log(str.search("bcd"));//1
console.log(str.search("g"));//-1
16.match();
在字符串中匹配某个正则是否存在
返回值:如果存在,返回一个数组,数组放着匹配到的子串,如果不存在,返回null
var str = "aa BB CC AA";
var reg = /aa/ig; //全局不分大小写
console.log(str.match(reg)); //["aa", "AA"]
17.String();
强制转换为字符串,所有的参数都可以 (英文和汉字除外)
console.log(String(NaN)); //"NaN"
console.log(String(null)); //"null"
console.log(String(undefined)); //"undedined"
console.log(String(12345)); //"12345"
二、ES6字符串方法
1.includes();
根据值判断字符串是否包含,返回布尔值
var str = "abcdef";
console.log(str.includes("bc"));//true
console.log(str.includes("bac"));//false
2.padStart(); /padEnd(num);
str.padStart(num); 将数组长度增加到num 从左到右以空格填充
str.padEnd(num); 将数组长度增加到num 从右到左以空格填充
str.padEnd(num,a); 将数组长度增加到num 从右到左以a填充
var str = "abc";
console.log(str.padStart(8)); // abc
console.log(str.padStart(8,"123")); //12312abc
console.log(str.padEnd(8,"123")); //abc12312
3.repeat();
字符串重复拼接
var str = "cdef";
console.log(str.repeat(3));//cdefcdefcdef,str重复拼接自身3次
4.startsWith(); / endsWith();
startsWith() 判断字符串是否以参数字符开头
endsWith() 判断字符串是否以参数字符结尾
var str = "cdef";
console.log(str.startsWith("cd"));//true,字符串是否以cd开头
console.log(str.endsWith("ef"));//true,字符串是否以ef结尾
5.trimLeft(); / trimRight();
str.trimLeft(); 去掉左边空格 es6 ie不支持
str.trimRight(); 去掉右边空格 es6 ie不支持
var str = " abc ";
console.log(str.trimLeft()); //abc
console.log(str.trimRight()); // abc
四、字符串的遍历
var str = "abcdef"
for (var i = 0; i < str.length; i++) {
console.log(str[i]); //遍历每一个字符 a b c d e f
}
var str = "abcdef"
for (var key in str) {
console.log(key); //遍历下标 0 1 2 3 4 5
}
for (var ch of str) {
console.log(ch); //遍历每一个字符 a b c d e f
}