主要知识点:新增的字符串处理方法、模板字面量以及正则表达式上的改动
![]()
字符串(String)是JavaScript6大原始数据类型。其余几个分别是Boolean、Null、Undefined、Number、Symbol(es6新增)。es6
字符串类型在前端开发者,是使用最频繁的类型之一,网站上可见的各类文案,几乎都是字符串类型的数据。咱们常常须要使用的操做无非是这么几点:读取字符串、转换字符串、清空字符串、拼接字符串、截取字符串。正则表达式
在ES5中,字符串类型已经有了很是丰富的应用能力,那么,在ES6中,ECMA的专家们对字符串作了什么更新呢?segmentfault
当Unicode引入扩展字符集以后,16位的字符已经不足以知足字符串的发展,因此才在ES6中更新了Unicode的支持。网站
咱们看看ES6字符串新增的方法编码
UTF-16码位:ES6强制使用UTF-16字符串编码。关于UTF-16的解释请自行百度了解。spa
codePointAt():该方法支持UTF-16,接受编码单元的位置而非字符串位置做为参数,返回与字符串中给定位置对应的码位,即一个整数值。code
String.fromCodePoiont():做用与codePointAt相反,检索字符串中某个字符的码位,也能够根据指定的码位生成一个字符。orm
normalize():提供Unicode的标准形式,接受一个可选的字符串参数,指明应用某种Unicode标准形式。blog
正则表达式u修饰符:当给正则表达式添加u字符时,它就从编码单元操做模式切换为字符模式。
正则表达的y标志:y 标志影响正则表达式搜索时的粘连( sticky ) 属性,它表示从正则表达式的 lastIndex 属性值的位置开始检索字符串中的匹配字符。若是在该位置没有匹配成功,那么正则表达式将中止检索;
复制正则表达式:使用RegExp构造器时容许使用第二个参数,而且让它覆盖第一个参数中的标志;
flag属性:ES6 新增了 flags 属性用于配合 source 属性,让标志的获取变得更容易。
之前咱们常常使用indexOf()来检测字符串中是否包含另一段字符串。请输入代码
let t = 'abcdefg' if(t.indexOf('cde') > -1) { console.log(2) } //输出2,由于t字符串中包含cde字符串。
在ES6中,新增了3个新方法。每一个方法都接收2个参数,须要检测的子字符串,以及开始匹配的索引位置。
includes(str, index):若是在字符串中检测到指定文本,返回true,不然false;若是不传第二个参数,默认为0。
let t = 'abcdefg' if(t.includes('cde')) { console.log(2) } //true
startsWith(str, index):若是在字符串起始部分检测到指定文本,返回true,不然返回false。若是不传第二个参数,默认为0。
let t = 'abcdefg' if(t.startsWith('ab')) { console.log(2) } //true
endsWith(str, index):若是在字符串的结束部分检测到指定文本,返回true,不然返回false。默认为字符串末尾开始查找。
若是你只是须要匹配字符串中是否包含某子字符串,那么推荐使用新增的方法,若是须要找到匹配字符串的位置,使用indexOf()。
接收一个Number类型的数据,返回一个重复N次的新字符串。即便这个字符串是空字符,也你能返回N个空字符的新字符串。
console.log('ba'.repeat(3)) //bababa
之前,咱们用单引号或双引号表示字符串。
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
既然替换位是 JS 表达式,那么可替换的就不单单是简单的变量名。你能够轻易嵌入计算、函
数调用,等等。例如:
let count = 10, price = 0.25, message = `${count} items cost $${(count * price).toFixed(2)}.`; console.log(message); // "10 items cost $2.50."