//ES5 String.fromCodePoint() 用于从Unicode码点返回对应字符 但不能识别码点大于0xFFFF //ES6中 可以识别大于0xFFFF的字符 // ES6中 新增加String对象的String.raw()方法 String.raw`Hi\n${2 + 3 }!`//该方法返回一个斜杠都被转义的字符串 //'Hi\\n5 // 若原字符串的斜杠已经转义 String.raw()会进行再次转义 String.raw`Hi\\n` //返回'Hi\\\\n // String.raw()也可做为函数使用 第一个参数应该是一个具有raw属性的对象 且raw属性的值应该是一个数组 String.raw({raw:'test'},0,1,2) //'t0e1s2t' // String.raw()代码实现如下 String.raw = function(strings,...values){ let output = '' let index ; for(index = 0;index<values.length;index++){ output+=strings.raw[index] + values[index]; } output +=strings.raw[index] return output; }
// unicode的正规化:ES6提供的normalize()方法 将字符的不同表示方法统一为同样的形式 // normalize有四个可选参数: // 1.NFC:默认参数 表示标准等价(视觉和语义上的等价)合成 返回多个字符的合成字符 // 2.NFD:表示标准等价分解 即在标准等价的前提下 返回合成字符分解的多个字符 // 3.NFKC:表示兼容等价(语义等价 视觉不等价)合成 返回合成字符 // 4.NFKD:表示兼容等价分解 即在兼容等价前提下 返回合成字符分解的多个简单字符 // 但normalize方法不能识别中文 且不能识别三个或三个以上字符的合成 //传统indexof() ES6新增方法 确定一个字符串是否包含在另一个字符串之中 // includes()返回布尔值 是否找到了参数字符串 // startsWith()返回布尔值 表示参数字符串是否在源字符串头部 // endsWith()返回布尔值 参数字符串是否在原字符串尾部 let s = 'hello javascript!'; s.startsWith('hello') //true s.endsWith('!') //true s.includes('o') //true // 上述三种方法 均有第二参数 表示开始搜索位置 s.startsWith('javascript', 6) //true s.includes('hello', 6) //false s.endsWith('hello', 5) //true // 实例方法 repeat() // 返回一个新字符串 表示将原字符串重复n次 参数若是小数 被向下取整 //参数NaN等同于0 // 参数若是字符串 则会转换为数字 'na'.repeat('na') //输出空字符 // 实例方法7 字符串长度补全功能 padStart()用于头部补全 padEnd()用于尾部补全 'x'.padStart(5, 'ab') //'ababx' 'x'.padStart(4, 'ab') //'abax' 'x'.padEnd(5, 'ab') //'xabab' // 如果原字符串长度刚好等于或大于补全长度参数 则字符串补全不生效 返回原字符串 // 实例方法8 trimStart()消除字符串头部空格 trimEnd()消除字符串尾部空格 // 上述两种方法不仅对字符串头部或尾部空格键有效 且对tab键 换行符等不可见的空白字符也有效 // 实例方法9 matchAll() // 返回一个正则表达式在当前字符串的所有匹配