《深切明白ES6》笔记——字符串和正则表达式(2)

相比较于第一章变量的声明,这一章的内容有了一点深度提拔,但还不至于很难明白。本章主要讲2个学问点,字符串正则表达式

字符串

字符串(String)是JavaScript6大原始数据范例。其他几个分别是Boolean、Null、Undefined、Number、Symbol(es6新增)。

字符串范例在前端开辟者,是运用最频仍的范例之一,网站上可见的种种案牍,险些都是字符串范例的数据。我们常常须要运用的操纵无非是这么几点:读取字符串、转换字符串、清空字符串、拼接字符串、截取字符串。

在ES5中,字符串范例已有了异常丰富的运用才能,那末,在ES6中,ECMA的专家们对字符串做了什么更新呢?

当Unicode引入扩大字符集以后,16位的字符已不足以满足字符串的生长,所以才在ES6中更新了Unicode的支撑。

我们看看ES6字符串新增的要领

UTF-16码位:ES6强迫运用UTF-16字符串编码。关于UTF-16的诠释请自行百度相识。

codePointAt():
该要领支撑UTF-16,吸收编码单位的位置而非字符串位置作为参数,返回与字符串中给定位置对应的码位,即一个整数值。

String.fromCodePoiont():作用与codePointAt相反,检索字符串中某个字符的码位,也能够依据指定的码位天生一个字符。

normalize():供应Unicode的规范情势,吸收一个可选的字符串参数,指明运用某种Unicode规范情势。

正则表达式

正则表达式u修饰符:
当给正则表达式增加u字符时,它就从编码单位操纵形式切换为字符形式。

其他新增的要领

上面提到的字符串和正则的新增要领只要在国际化的时刻才用的到,我想,国内的许多网站照样不须要斟酌国际化的题目,看不懂就先丢掉。下面讲到的新增的要领是现实开辟中需求比较频仍的要领。

字符串中的子串辨认

之前我们常常运用indexOf()来检测字符串中是不是包括别的一段字符串。

let t = 'abcdefg'
if(t.indexOf('cde') > -1) {
  console.log(2)
}
//输出2,因为t字符串中包括cde字符串。

在ES6中,新增了3个新要领。每一个要领都吸收2个参数,须要检测的子字符串,以及最先婚配的索引位置。

includes(str, index):假如在字符串中检测到指定文本,返回true,不然false。

let t = 'abcdefg'
if(t.includes('cde')) {
  console.log(2)
}
//true

startsWith(str, index):假如在字符串肇端部份检测到指定文本,返回true,不然返回false。

let t = 'abcdefg'
if(t.startsWith('ab')) {
  console.log(2)
}
//true

endsWith(str, index):假如在字符串的完毕部份检测到指定文本,返回true,不然返回false。

let t = 'abcdefg'
if(t.endsWith('fg')) {
  console.log(2)
}
//true

假如你只是须要婚配字符串中是不是包括某子字符串,那末引荐运用新增的要领,假如须要找到婚配字符串的位置,运用indexOf()。

repeat(number)

这个要领挺有意义的,吸收一个Number范例的数据,返回一个反复N次的新字符串。纵然这个字符串是空字符,也你能返回N个空字符的新字符串。

console.log('ba'.repeat(3)) //bababa

正则表达式的其他更新

正则表达式y修饰符、正则表达式的复制、flags属性……

因为这一块学问没用过,就不盘算去研讨现实用处。

模板字面量

之前,我们用单引号或双引号示意字符串。

let a = '123' //单引号
let b = "123" //双引号

如今,运用模板字面量反撇号“。在现实开辟中,这是常常都要用到的要领。

let c = `123` //反撇号

在字符串中运用反撇号,只须要加上转义符。

let d = `12\`3` //字符串内插进去反撇号的体式格局。

在多行字符串的运用价值:

模板字面量为处置惩罚多行字符串的一系列题目供应了一个异常好的机制。

假如不运用模板字面量,完成多行字符串,你能够会运用换行符。

let a = '123\n456'
console.log(a) 
// 123
// 456

运用模板字面量,就能够异常简朴的完成需求。

let a = `123
456
`
console.log(a)
// 123
// 456

在模板字面量插进去变量的要领。

我们不再须要运用 +(加号)来向字符串插进去变量,而是运用${params}直接插进去你须要增加到字符串的位置。

let t = 'haha'
let a = `123${t}456`
console.log(a) //123haha456

这类体式格局也叫作字符串占位符。占位符支撑相互嵌套模板字面量,壮大吧。有了它,我们终究能够扬弃 + 拼接字符串的恶心做法了。

模板字面量的终究用法
tag是一个要领,要领名你能够恣意定名,这类写法被称作标签模板。

function tag(literals, ...substitutions) {
    //literals是数组,第一个位置是"",第二个位置是占位符之间的字符串,在本例中是haha
    //substitutions是字符串中的模板字面量,能够多个
    
    //函数终究返回字符串
}
let a = 4
let t = tag`${a} haha`
console.log(t) //4 haha

总结

本章讲到了ES6中新增的Unicode要领,然则关于不须要做国际化处置惩罚的同砚,这个功用就不会用到,须要关注的新增的字符串婚配的3个要领,以及模板字面量的运用。这2个学问点异常异常经常使用!

=> 返回文章目次

    原文作者:二月
    原文地址: https://segmentfault.com/a/1190000010203454
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞