JavaScript -- string类型

字符串提取方法

slice() substr() substring()

作用: 返回对应字符串的一个子字符串,而且都接收一个或两个参数。
区别: 对于slice()和substiring()而言,第一个参数表示子字符串开始的位置,第二个参数表示子提取结束的位置,对于substr()而言,第二个参数表示返回的子字符串数量。
省略第二个参数都会提取到字符串末尾

 let str = 'hello world'
 console.log(str.slice(3)) // lo world
 console.log(str.substring(3)) // lo world
 console.log(str.slice(3, 5)) // lo
 console.log(str.substr(3, 5)) // lo wo

当某个参数为负值时:
slice()方法会将所有负值参数都当成字符串长度加上负参数值。

 console.log(str.slice(-3)) // rld
 console.log(str.slice(3, -4)) //lo w

这里,在给slice传入负参数值时,-3会被转换为8(11+ (-3)),实际上调用的是slice(8);当第二个参数为负值时,slice()将第二个参数转换为7,实际上调用的是slice(3,7)。

substring()方法会将所有负值数值都转换为0。

 console.log(str.substring(-3)) // hello world
 console.log(str.substring(3, -4)) // hel

这里,substring()会将所有负值转换为0,所以第一个例子实际调用的是substring(0),即全部字符串;第二个例子实际调用的是substring(3,0),但是它等价于substring(0,3),因为这个方法会自动将较小的参数作为起点。

substr()方法将第一个负参数值当成字符串长度加上该值,将第二个负值参数转换为0。

 console.log(str.substr(-3)) //rld
 console.log(str.substr(3, -4)) // ""(empty)

这里要注意,第二个例子的-4会自动转换为0,就意味着返回的字符串包含0个字符,因此返回的是一个空字符串。

字符串位置方法

indexOf() lastIndexOf()

作用: 这两种方法均种字符串种搜索传入的字符串,并返回位置。
区别: indexOf()方法从字符串开头开始查找字符串,而lastIndexOf()从字符串末尾开始查找字符串。

 let str = 'hello world'
 console.log(str.indexOf('o')) // 4
 console.log(str.lastIndexOf('o'))  // 7

当方法接收两个参数时,第二个参数表示开始搜索的位置。
这就意味着,indexOf()会从这个参数指定位置开始向字符串末尾搜索,忽略该位置之前的字符;lastIndexOf()会从这个参数指向的位置开始想向字符串开头搜索,忽略该位置之后到字符串末尾的字符。

 console.log(str.indexOf("o", 6)); // 7
 console.log(str.lastIndexOf("o", 6)); // 4

这里,第一个例子从"w"字符开始向后找第一个"o"字符;而第二个例子则是从"w"开始向前找第一个"o"字符。

ES6新添方法 – 字符串包含方法

startsWith() endsWith() includes()

作用: 从字符串中搜索传入的字符串,并返回一个表示是否包含的布尔值。
区别:
startsWith() 检查从第一个字符开始看是否匹配(即前面几个字符是否是要检查包含的子字符串);
endsWith() 检查从最后一个字符开始向前看是否匹配。(即最后几个字符是否是要检查包含的子字符串。);
includes() 检查整个字符串。

 let message = "foobarbaz";
 console.log(message.startsWith("foo")); // true
 console.log(message.startsWith("bar")); //false

 console.log(message.endsWith("foo")); //fasle
 console.log(message.endsWith("baz")); //true

 console.log(message.includes("bar")); //true    
 console.log(message.includes("dmsl")); //fasle

接收两个参数时:

 console.log(message.startsWith("foo")); //true
 console.log(message.startsWith("foo", 1)); // false

 console.log(message.endsWith("baz")); // true
 console.log(message.endsWith("baz", 6)); // false

 console.log(message.includes("bar")); // true
 console.log(message.includes("bar", 4)); // false

startsWIdth() 和 includes() 方法的第二个参数表示开始搜索的位置。如果传入了第二个参数,就意味着这两个方法会从指定的位置向字符串末尾搜索。
而,endsWith() 表示第二个参数应该作为字符串末尾的位置。

trim()

作用: 用于清除字符串前、后的所有空格符。

 let s1 = "  11  ";
 console.log(s1); // "  11  "
 console.log(s1.trim()); // "11"

另外,trimLeft()只清除左空格,trimRight()只清除右空格。

字符串迭代和解构

字符串的原型暴露一个@@iterator方法,表示可以迭代字符串的每个字符。
在for-of循环中可以通过迭代器按序访问每个字符:

 for (const code of "abcfd") {
      console.log(code);
 }

字符串通过解构分割成字符数组

 let message = "abcde";
 console.log([...message]); // ['a', 'b', 'c', 'd', 'e']

split()

作用: 根据传入的分隔符将字符串拆分成数组。
第一个参数作为分隔符,第二个参数表示返回数组元素个数。

 let message = "abcde";
 console.log(message.split("")); // ['a', 'b', 'c', 'd', 'e']
 console.log(message.split("", 3)); // ['a', 'b', 'c']
上一篇:php代码审计10审计会话认证漏洞


下一篇:springboot+redission消息队列应用探索