ES6 — 字符串String
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的更多相关文章
- es6 字符串String的扩展
新特性:模板字符串 传统字符串 let name = "Jacky"; let occupation = "doctor"; //传统字符串拼接 let str ...
- es6+字符串string的新增方法函数
String.includes("xxx") 返回true/false [es5的字符串查找方法:String.indexOf() ] String.startsWit ...
- ES6让字符串String增加了哪些好玩的特性呢?
确实因为现在天气变热了,所以一天天的这么写我也很累.所以如果阅读的时候有什么错误还请大家指出来,不好意思.学习永无止境. OK,今天继续讲解ES6系列知识 学过上一节的解构赋值就知道,ES6确实给我们 ...
- es6 字符串的扩展和数值的扩展
es6字符串的扩展 1. es6新增的一些方法 1.1 includes 判断是否包括在内,返回一个 true or false 1.2 statsWith 判断是否以什么开头,返回一个 true o ...
- ES6字符串和正则表达式改动
1. ES6字符串变更 (1)includes() 方法,如果在字符串中检测到指定文本返回true,否则返回false (2)startsWith()方法,如果在字符串的起始部分检测到文本,则返回tr ...
- javascript类型系统——字符串String类型
× 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
- Java常量字符串String理解
Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用 "eq ...
- 字符串string类型转换成DateTime或DateTime?类型
常用的Convert.ToDateTime方法 //将含有正确日期格式的string类型转换成DateTime类型 string strDate = "2014-08-01"; D ...
随机推荐
- 一模 (5) day1
第一题: 题目大意:求出1-10^n 这些数中,包含数字3的有多少个. n<=1000: 解题过程: 1.这题一看就是高精度+递推..如果n=1000,那么假设个位是3,其他999位任意..那么 ...
- Power string(poj 2406)
题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...
- 矩阵(matrix)
我们定义一个矩阵的权值为这个矩阵四个角上的数值的最小值.现在小M有一个矩阵,他想在这个矩阵中寻找到一个权值最大的子矩阵,请你告诉他这个最大权值.(距形规模最大为2000*2000) 比赛 看到第二题那 ...
- MyEclipse的 at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>错误解决办法
我们使用myeclipse自动部署web项目时会设置服务器的位置,而部署的相关配置会存储在myeclipse工作目录下的“/.metadata/.plugins/org.eclipse.core.ru ...
- Rhel6-tomcat+nginx+memcached配置文档
理论基础: User - > web ->nginx ->tomcat1 ->*.jsp 80 8080 ↓ -> tomcat2 html ...
- [USACO精选] 第三章 排序
#9 重排干草 2014-02-12 QAQ这么快居然开学了,这么来说时间越来越少了…开学第二天,作业不多,赶紧抽出时间把这道想了很久的题给搞定……真的想了很久,其实看了解题也想了很久,我觉得我等数学 ...
- powershell小工具,efs加解密三剑客。
powershell efs 加密 解密 列出 decryption list --------前言:我编写这两个脚本的目的,大家不可不知!-------- 1 是为系统管理员,网管员编写 ...
- 在Android Studio中使用BaiduMap SDK实时获取当地位置信息
配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名 ...
- SharePoint表单和工作流 - Nintex篇(四)
博客地址 http://blog.csdn.net/foxdave 接上篇点击打开链接 "Manage workflow constants" 管理工作流常量.这里可以管理工作流中 ...
- Tomcat 网站部署(三)
一.Tomcat的部署方式有以下两种 1.自动部署 2.虚拟目录 二.自动部署 文件必须放在放在webapps就可以了,可以用这样访问 http://localhost:8080/放在webapps目 ...