ES6新特性之字符串的扩展实例分析


Posted in Javascript onApril 01, 2017

本文实例讲述了ES6新特性之字符串的扩展。分享给大家供大家参考,具体如下:

一、ES5字符串函数

concat: 将两个或多个字符的文本组合起来,返回一个新的字符串。
indexOf: 返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。
charAt: 返回指定位置的字符。
lastIndexOf: 返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 。
match: 检查一个字符串匹配一个正则表达式内容,如果么有匹配返回 null。
substring: 返回字符串的一个子串,传入参数是起始位置和结束位置。
substr: 返回字符串的一个子串,传入参数是起始位置和长度
replace: 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。
search: 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。
slice: 提取字符串的一部分,并返回一个新字符串(与 substring 相同)。
split: 通过将字符串划分成子串,将一个字符串做成一个字符串数组。
length: 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。
toLowerCase: 将整个字符串转成小写字母。
toUpperCase: 将整个字符串转成大写字母。

二、ES6新增常用函数

传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。

includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。

var s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true

repeat(): 返回一个新字符串,表示将原字符串重复n次。

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)// RangeError
'na'.repeat(-1)// RangeError
'na'.repeat(-0.9) // ""

参数如果是小数,会被取整(向下取整)。
参数是负数或者Infinity,会报错。
参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0,repeat视同为0。
参数NaN等同于0。

ES7推出了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart用于头部补全,padEnd用于尾部补全。padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

如果省略第二个参数,则会用空格补全长度。

三、模板字符串

1. 多行字符串

传统的JavaScript语言,输出模板通常是这样写的。

$('#result').append(
  'There are <b>' + basket.count + '</b> ' +
  'items in your basket, ' +
  '<em>' + basket.onSale +
  '</em> are on sale!'
);

上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。

$('#result').append(`
  There are <b>${basket.count}</b> items
   in your basket, <em>${basket.onSale}</em>
  are on sale!
`);

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

2.嵌入变量

模板字符串中嵌入变量,需要将变量名写在${}之中。

// 字符串中嵌入变量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

3.调用函数

模板字符串之中还能调用函数。

function fn() {
 return "Hello World";
}
`foo ${fn()} bar`
// foo Hello World bar

如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

如果模板字符串中的变量没有声明,将报错。

如果大括号内部是一个字符串,将会原样输出。

`Hello ${'World'}`
// "Hello World"

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery动态添加的元素绑定事件处理函数代码
Aug 02 Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 Javascript
Bootstrap和Java分页实例第二篇
Dec 23 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
Nov 18 Javascript
浅析Vue 生命周期
Jun 21 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
微信公众号开发之微信支付代码记录的实现
Oct 16 Javascript
JavaScript实现栈结构详细过程
Dec 06 Javascript
Vue.js实战之利用vue-router实现跳转页面
Apr 01 #Javascript
ES6新特性之函数的扩展实例详解
Apr 01 #Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 #Javascript
ES6新特性之模块Module用法详解
Apr 01 #Javascript
Vue.js实战之组件之间的数据传递
Apr 01 #Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 #Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 #jQuery
You might like
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python 实现插入排序算法
2012/06/05 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
商务专员岗位职责
2013/11/23 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
董事长助理岗位职责
2015/02/11 职场文书
高考1977观后感
2015/06/04 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js