ES6-字符串-字符串(复习+学习)

  • A+
所属分类:Web前端
摘要

又到了一天一度的写笔记的时间了,今天看的ES6字符串部分,因为内容我感觉挺多的,而且需要理解,所以第二个部分模板字符串的笔记就放到明天来写了,今天就写一下学习字符串对象的笔记,笔记分为以下几点:


字符串

又到了一天一度的写笔记的时间了,今天看的ES6字符串部分,因为内容我感觉挺多的,而且需要理解,所以第二个部分模板字符串的笔记就放到明天来写了,今天就写一下学习字符串对象的笔记,笔记分为以下几点:

1.字符的表示方法

2.字符串对象的一些方法

 

开始今天的笔记吧!

 

 

 

 

 

 

 

 

1.字符的表示方法

什么字符的表示方法?第一次听到这个问题的时候,可能一脸蒙,我查阅了一下资料,简单的大概的了解了一下这方面的知识部分,相信大家都听说过ASCII码,大家如果以c语言开始打基础的话,就应该知道,c语言中电脑上输出的字符实际上是数字。当然,计算机底层数据存储也是二进制的吧,从二进制转化为十进制,然后以数字的形式对应这字符或者其他符号,当你了解到这个的时候,那么再看下面的笔记,或许就不会那么的艰难了。

ES6对Unicode的支持更好了,目前也有了字符串对象,那么什么是Unicode?Unicode ( 统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求 ) ,而我们熟悉的UTF-8,UTF-16,UTF-32是Unicode的具体实现(怎么存储在计算机当中)。所以,Unicode就是一种标准,UTF就是通过这种标准实现的模式(个人理解),所以字符串的表示方法?现在应该可以理解了吧,下面就开始笔记的正式内容:

 1 //1.js允许采用uxxxx 的形式表示一个字符,其中xxxx表示Unicode的码点:  2 "u0061" // a  0061对应的就是a在Unicode中的数字  3 //但是这种只可以识别0000 - FFFF之间的字符,超过的话必须用两个字节的形式进行表达(一种编码对应一个字节,超过范围需要用二字节表示)  4 "uD842uDFB7"    //?  5 "u20BB7"    // 7   该数已经超过了FFFF  所以多余的部分类似于  u20BB + 7  u20BB不可以打印  所以只有7  6 //ES6解决方法:利用大括号就可以正确解读  7 "u{20BB7}"  //"?"  8 'u{1F680}' === 'uD83DuDE80'    \true  9 10 //2.js中共有六种方法表示字符 11 'z'   //z 12 '172' //z 13 'x7A'  //z    表示单字节码 14 'u007A' //z   表示unicode 码 15 'u{7A}' //z

 

 

 

 

 

 

 

 

 

 

 

2.字符串对象的一些方法

1.codePointAt()方法

 1 //codePointAt()方法就是返回一个unicode码,第一个参数就直接返回该第一个字符对应的编码.  2 var s = '?a';  3 s.codePointAt(0);   //134071  4 s.codePointAt(1);   //返回的是后两个字节的十进制  5 s.codePointAt(2);   //返回a的十进制数  6 //正常的情况应该是参数1直接返回a的十进制编码,要解决这个方法的话,就用for of循环遍历字符串  7 var s = '?a';  8 for(let ch of s){  9     console.log(ch.codePointAt(0).toString(16));   //依次遍历字符,第一个,第二个字符对应的第0个就是对应的编码 10 } 11 //利用codePointAt() 方法测试一个字符的字节 12 function is32Bite(c){ 13     return c.codePointAt(0) > 0XFFFF; 14 } 15 is32Bite("?");  //true

 

 

2.String.fromCodepoint()

 1 //ES6新增了String.fromCodePoint()方法,该方法与ES5中的fromCharPoint() 方法能识别大于0XFFFF的编码,将其转化为字符 2 String.fromCodePonit(0x20BB7) //'?' 

 

3.for...of 循环遍历字符串

1 //该遍历相比较于单纯的for循环遍历,优点就是可以识别大于0xFFFF的码点,传统的for循环无法识别。 2 var a = String.fromCodePoint(0x20BB7); 3 for(let i = 0;i<a.length;i++){ 4     console.log(text[i]);    //利用for循环得到的就是""空的,因为for循环无法识别大于0xFFFF码点 5 } 6 for(let i of a){ 7     console.log(i);   //?    利用for...of遍历字符串就可以得到 8 } 9  

 

4.at()方法返回字符串位置

1 //ES6的at()方法与ES5的charAt() 方法相比,新的at方法可以识别大于0xFFFF编码 2 '?'.charAt(0);   // 返回的是?的第一个字节 3 '?'.at(0);   // 返回的是?,可以识别 4 ’abc'.at(0);    //a

 

 

5.normalize()方法自行查询,这个我本人也不是很理解

 

6.includes(),startsWith(),endsWith()方法

 1 //includes()  返回布尔值,表示是否找到了(参数对应的)字符串  2 //startsWith()  返回布尔值,表示参数字符串是或否在源字符串头部  3 //endsWith()   返回布尔值,表示对应参数是否在尾部  4 //传统的indexOf() 方法可以确定一个参数是否在另一个参数内(具体自行查阅)  5 var a = 'asd';  6 s.includes('s');   //true  7 s.startsWith('a')  //true  8 s.endsWith('d')   //true  9 10 //三个方法的都可以用有第二个参数,表示从什么地方开始比对 11 s.startsWith('s',1);  //true

 

 

7.repeat()方法

1 //返回一个新的字符串,表示将原来的字符串重复n次 2 vat a = 'x'.repeat(3);  //'xxx' 3 //小数会取证,舍去,如果是0到-1会取0,参数为字符串,会先转化为数字 4 'x'.repeat(2.9); //xx 5 'x'.repeat(-0.9); //'' 6 'x'.repeat('na') //''

 

 

8.padStart(),padEnd()方法

 1 //ES6引入了补全长度方法,一个在头部补全(start),一个在尾部补全(end)。  2 String.padStart('长度','补全字符串');  //下面一样  3 'x'.padStart('5','a');  //aaaax    4 'x'.padEnd('5','a'); //xaaaa  5 //注意,原长度大于或者等于参数,则会返回原来字符串  6 'xxx'.padEnd(2,'aaa');  //xxx  7 //注意,如果用来补全的字符串与原来字符串的长度,超出了指定的最小长度,则会截取参数字符串超出部分,与原来字符串相接  8 abc.padStart(10,'123456789');   //1234567abc  9 //注意,如果省略第二个参数,会用' '补全(空格) 10 11 //用途:经常用于补全位数,或者固定的字符串格式(自己体会) 12 '1'.padStart(10,'0');  //00000000001;

 

 

 

 

 

 

说实话,今天的这一部分我学的真的累,有许多东西都是今天刚搜索到新学习的知识,字符串模板笔记明天学习,这个笔记大家可以复习学习一下,如果有的地方理解不到位,或者笔记有错误的地方,可以下面评论更改,加油!ES6-字符串-字符串(复习+学习)