一、字符串的定义及判断

js中字符串定义有三种方法,分别是单引号双引号构造函数,如下示例:

var a = 'testa';
var b = "testb";
var c = String('testc');
console.log(a);//testa
console.log(b);//testb
console.log(c);//testc

判断一个变量是否是字符串,可以用typeof关键字,也可以使用Object.prototype.toString()方法,如下:

var a = "test";
console.log(typeof a);//string
console.log(Object.prototype.toString.call(a));//[object String]

二、字符串遍历

要遍历字符串看,首先需要获取字符串的长度,可以用length属性获取一个字符串的长度,如下示例:

var a = "string";
console.log(a.length);//6

可以用charAt()方法获取字符串这个位置的字符,这样能就可以实现字符串的遍历了,如下所示:

var a = "string";
for(var i = 0; i < a.length; i++){
	console.log(a.charAt(i));
}

三、字符串的分割

使用split()方法实现字符串的分割,split方法会把字符串分割成字符串数据,并返回字符串数组,如下:

var a = "a,aa,aaa,aaaa,aaaaa";
var b = a.split(",");
console.log(JSON.stringify(b));//["a","aa","aaa","aaaa","aaaaa"]

四、字符串提取

字符串提取常用的用三种方法substr(start,length)substring(start, end)slice(start, end)

4.1 substr(start,length)

从字符串的start处开始,提取length个字符,构成一个新的字符串,并将新的字符串返回,示例如下:

var a = "hello world";
var b = a.substr(6,5);
console.log(b);//world

如果忽略length参数,将提取用start位置开始,到最后的结束,示例如下:

var a = "hello world";
var b = a.substr(6);
console.log(b);//world
4.2 substring(start, end)

提取从字符串的start位置起,到end为止(不包括end)的字符,构成一个新的字符串,并将新的字符串返回:

var a = "hello world!";
var b = a.substring(6, 11);
var c = a.substring(6);
console.log(b);//world
console.log(c);//world!

如果end < start,substring会自动置换end和start的值:

var a = "hello world";
var b = a.substring(11, 6);
console.log(b);//world
4.3 slice(start, end)

提取从字符串的start位置起,到end为止(不包括end)的字符,构成一个新的字符串,并将新的字符串返回,slice方法比substring方法灵活的是,它的start和end都可以是负值,负值表示从字符串的尾部开始计算:

var a = "hello world!";
var b = a.slice(6, 11);
var c = a.slice(6);
var d =  a.slice(6, -1);
console.log(b);//world
console.log(c);//world!
console.log(d);//world

如果end < start,slice会输出一个空字符串:

var a = "hello world";
var b = a.slice(-1, -5);
console.log(b.length);//0

五、字符串反转

js中没有字符串反转的方法,可以利用split分割字符串,再用reverse()方法反转字符串数组,最后用join()方法重新将数组拼接成字符串,示例如下:

var a = "hello world";
var b = a.split("").reverse().join("");
console.log(b);//dlrow olleh

六、字符串替换

js中用replace(reg, target)方法实现字符串的替换(不会改变原来的字符串),其中reg是正则表达式,targer是替换后的字符串,示例如下:

var a = "teststring";
var b = a.replace("t", "-");
var c = a.replace(/t/g, "-");
console.log(a); // teststring
console.log(b);//-eststring
console.log(c);//-es-s-ting

七、判断字符串是否包含某个子串

7.1 indexOf&lastIndexOf

使用indexOf(str)lastIndexOf(str)方法可以判断字符串中是否包含某个子串,如果包含则返回子串出现的位置,如果不包含则返回-1,这两个方法的区别是:indexOf()返回的是子串第一次出现的位置,lastIndexOf()返回的是子串最后一次出现的位置,示例如下:

var a = "hello world, my world";
console.log(a.indexOf("kk"));//-1
console.log(a.indexOf("world"));//6
console.log(a.lastIndexOf("kk"));//-1
console.log(a.lastIndexOf("world"));//16

7.2 includes

使用includes方法可以判断字符串是否包含某个子串,如果包含则返true,否则返回false

var a = "hello world, my world";
console.log(a.includes("kk"));// false
console.log(a.includes("world"));// true

八、校验字符串是否符合某个正则表达式

可以使用reg.test(str)方法来校验字符串是否匹配某个正则表达式,示例如下:

var reg = /^(nid)[0-7]{3}(op)$/
var a = "nid234op";
var b = "nid238op";
console.log(reg.test(a));//true
console.log(reg.test(b));//false

八、字符串正则提取

使用match(reg)实现对字符串的正则提取,示例如下:

var reg = /([A-Z]+)([0-9]+)/
console.log(JSON.stringify("A12".match(reg)));//["A12","A","12"]
console.log(JSON.stringify("AB12".match(reg)));//["AB12","AB","12"]