ES6对字符串新增了一些函数和操作规范。下面我们来看ES6中对字符串新加的特性。

1、模版字符串 (即用反引号定义的字符串)

 传统的字符串拼接通过我们使用'+'号与变量连接。例如:

  let name='HH';

  let str='Hello'+name;

 在ES6中,引入了 $() 和反引号 ``,新的写法为:

  let name='HH';

  let  age=12;

  let str=`He is ${name}, he is ${age}.` (注意:这里是反引号)

 使用时注意的地方:

  (1) 当字符串需要换行时,不必在换行出使用'+'号连接(传统的换行方式),而是直接换行:

   传统: let str='write once'+'run anywhere';

   ES6: let str=`write once,

        run anywhere`;

    但是ES6的这种写法有一个问题,就是换行时的空格会保留,因此在输出的结果也是换行的。

  (2) ${} 中可以放任意的javascript表达式:

  • ${}运算表达式:

   var a=1;

   var b=2;

   var str=`result is:${a+b}`;

  • ${}中可以是对象属性:

   var obj={"a":1,"b":2};

   var str=`result is ${obj.a+obj.b}`;

  • ${}中可以是函数表达式:

   function fn(){return 3;};

     var str=`result is ${fn()}`;

2、标签模版 (可以理解为标签函数+模版字符串)

    我们先来看一个例子:

    var name='张三';

  var age='18';

  tagFn`他叫${name},年龄${age}岁。`;    //调用函数,我们可以按照自己的需求组合参数。

  function tagFn(arr,v1,v2){          //定义函数

    console.log(arr);    //['他叫' , ',身高' , '岁。']

    console.log(v1);   //张三

    console.log(v2);    //18

  }

这就是标签模版,他可以用来过滤用户的非法输入和多语言转换。

3、repeat函数 (复制字符串作用)

  可以将目标字符串复制n次,返回一个新字符串,而不影响原来的字符串:

  var name='你好';

  var name1=name.repeat(3);

  console.log(name);  //你好

  console.log(name1);  //你好你好你好

4、 includes函数 (判断字符串是否含有子字符串,返回true或false)

  var name='你好,再见';

  name.includes('好')    //true

  name.includes('哈')  //false

  name.includes('好',1)    //1指定了查找到开始字符串,表示从第二个字符开始向后查找目标(包括第2个),true

在传统字符串操作中,indexOf() 也可以用来查找是否含有指定目标,含有则返回第一次出现的位置,不含则返回-1。

5、startsWith (是否在开头位置出现) 和 endsWidth (是否在结尾位置出现) 返回true或false)

  var name='你好再见';

  name.startsWith('好')    //false

  name.startsWith('好',1)  //1指定了查找到开始字符串,表示从第二个字符开始向后查找目标(包括第2个),true

  name.endsWith('再')  //false

  name.endsWith('好',2)  //true 针对前2个字符串查找。

  name.endsWith('好',3)  //false 针对前3个字符串查找。

6、codePointAt 函数 和 String.fromCodePoint 函数

 codePointAt 函数用来读取4字节的字符,与之前的charAt()比较。

  在javascript中一个字符固定为2个字节,对于需要用四个字节存储的字符,如空格" ",javascript会认为它是2个字符,即length=2,这时无法用charAt()正确读取。

  var str1="你好";

  var str2=" ";

  str1.charAt(0)  //你

  srt2.charAt(0) //出错

  这时我们需要codePointAt函数实现对4字节字符的操作:

    str2.codePointAt()   //134071

  返回值为该四字节字符的Unicode编码的十进制值。134071 的十六进制值为20bb7。在Unicode编码中,空格的编码为\u20bb7。

  我们可以用String.fromCodePoint()函数来做反变换。

    String.fromCodePoint(134071)     // " "

7、String.raw() 函数 (按原样输出,不做任何处理。 raw表示不加工)

  不使用此函数时:console.log(`hello\nworld`);

  结果:    hello             //   \n被转义为换行

     word

 而使用String.raw() 函数:

  console.log(String.raw`hello\nworld`)   // hello\nworld 不做转义操作

  String.raw()函数常用来作为一个模版字符串的处理函数,即直接在后边加模版字符串。

——————————————————————

参考公众号:web前端教程 

  

    

    

  

ES6 — 字符串String的更多相关文章

  1. es6 字符串String的扩展

    新特性:模板字符串 传统字符串 let name = "Jacky"; let occupation = "doctor"; //传统字符串拼接 let str ...

  2. es6+字符串string的新增方法函数

    String.includes("xxx")   返回true/false     [es5的字符串查找方法:String.indexOf() ] String.startsWit ...

  3. ES6让字符串String增加了哪些好玩的特性呢?

    确实因为现在天气变热了,所以一天天的这么写我也很累.所以如果阅读的时候有什么错误还请大家指出来,不好意思.学习永无止境. OK,今天继续讲解ES6系列知识 学过上一节的解构赋值就知道,ES6确实给我们 ...

  4. es6 字符串的扩展和数值的扩展

    es6字符串的扩展 1. es6新增的一些方法 1.1 includes 判断是否包括在内,返回一个 true or false 1.2 statsWith 判断是否以什么开头,返回一个 true o ...

  5. ES6字符串和正则表达式改动

    1. ES6字符串变更 (1)includes() 方法,如果在字符串中检测到指定文本返回true,否则返回false (2)startsWith()方法,如果在字符串的起始部分检测到文本,则返回tr ...

  6. javascript类型系统——字符串String类型

    × 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...

  7. C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)

    在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...

  8. Java常量字符串String理解

    Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用  "eq ...

  9. 字符串string类型转换成DateTime或DateTime?类型

    常用的Convert.ToDateTime方法 //将含有正确日期格式的string类型转换成DateTime类型 string strDate = "2014-08-01"; D ...

随机推荐

  1. HTTP协议的chunked编码

    一般情况HTTP的Header包含Content-Length域来指明报文体的长度.如: 有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求 ...

  2. batch insert 1 million datas into mysql

    最近尝试插入1百万条数据进db,以mysql为例. 1. 顺序insert 先写了个无脑的for循环作为base-line,插1万条耗时1m53s,根本不敢插1百万. foreach(var stud ...

  3. Python的排序

    1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a','have','I' ...

  4. python 操作json

    认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Dece ...

  5. HDU 4622 求解区间字符串中的不同子串的个数

    题目大意: 给定一个长度<2000的串,再给最多可达10000的询问区间,求解区间字符串中的不同子串的个数 这里先考虑求解一整个字符串的所有不同子串的方法 对于后缀自动机来说,我们动态往里添加一 ...

  6. virtualbox安装提示出现严重错误解决办法

    解决办法: 在服务里面启动1. Device Install Service2. Device Setup Manager 这两个服务就好了.也有可能只需要启动第一个.

  7. awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上

    今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...

  8. SharedPreference 存储小量数据,一般首次启动显示引导界面就用这个。

    写://添加一个SharedPreference并传入数据SharedPreference sharedPreferences = getSharedPreferences("share_d ...

  9. iOS 端的 UI 聊天组件ChatKit及代码实现

    ChatKit 是一个免费且开源的 UI 聊天组件,自带云服务器,自带推送,支持消息漫游,消息永久存储.底层聊天服务基于LeanCloud(原名 AVOS ) 的 IM 实时通信服务「LeanMess ...

  10. 自然数n的分解

    输入自然数n(n<100),输出所有和的形式.不能重复. 如:4=1+1+2:4=1+2+1;4=2+1+1 属于一种分解形式. 样例: 输入: 7 输出: 7=1+6 7=1+1+5 7=1+ ...