1.Unicode
在早期,由于存储空间宝贵,Unicode使用16位二进制来存储文字,将一个16位的二进制编码叫做一个码元(Code Unit).
由于技术的发展,Unicode对文字编码进行了扩展,将某些文字扩展到了32位(占用两个码元),并且,将某个文字对应的二进制数字叫做码点(Code Point).
ES6为了解决这个困扰,为字符串提供了方法:codePointAt(),根据字符串码元的位置得到其码点。同时ES6为正则表达式添加了一个flag:u,如果添加了该配置,则匹配时,使用码点匹配。
2.字符串API
const text = "abcbdskwdjskjah"var result = text.includes("b",5);console.log(result);
const text = "abcbdskwdjskjah"var result = text.startsWith("b",2);console.log(result);
const text = "abcbdskwdjskjah"var result = text.endsWith("b",2);console.log(result);
const text = "abcbdskwdjskjah"var result = text.repeat(5);console.log(result);
3.粘连标记
标记名 含义 y 匹配时,完全按照正则对象中的lastIndex位置开始匹配,并且匹配的位置必须在lastIndex位置。
const text = "hello world"const reg = /w\w+/y;console.log(reg.lastIndex);console.log(reg.test(text));
4.模板字符串
ES6之前处理字符串繁琐的两个方面: 1.多行字符串 2.字符串拼接 ES6中提供了模板字符串的书写,可以方便的换行和字符串拼接
const text = `我要换行,我要换行我要换行,我要换行我要换行,我要换行`console.log(text);
const sk1 = "Python语言"const sk2 = "Java语言"var text = `我既学习了${sk1},又学习了${sk2}`console.log(text);
const sk1 = "Python"const sk2 = "Java"var text = myTag`我既学习了${sk1},又学习了${sk2}`/*** myTag`我既学习了${sk1},又学习了${sk2}`相当于 text = myTag(["我既学习了","又学习了"],"Python","Java")*/function myTag(parts,arg1,arg2){console.log(parts);console.log(arg1);console.log(arg2);console.log(Array.prototype.slice.apply(arguments).slice(1))console.log(arguments);}console.log(text);
const text =String.raw`abc\nbcd`console.log(text);
