ES6新特性4:字符串的扩展
本文摘自ECMAScript6入门,转载请注明出处。
一、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"
ES6新特性4:字符串的扩展的更多相关文章
- ES6新特性:Function函数扩展, 扩展到看不懂
		
本文所有Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 函数的默认值: 如果有参数 ,那就用参数, 如果没有参数, 那就用默认的参数: aj ...
 - javascript ES6 新特性之 扩展运算符 三个点 ...
		
对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...
 - ES6新特性之模板字符串
		
ES6新特性概览 http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串 http://www.infoq.c ...
 - es6的新特性--模板字符串
		
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
 - 【微信小程序+ES6新特性应用】字符串模板:美元符号$+大括号{}变量的写法
		
1.字符串模板简介 ES6新特性中的字符串模板允许使用英文字符抑音符号`(提示:这里我们不能将其理解为单引号)来创建字符串,并且在该字符串中可以包含都[美元符号+大括号]包裹的变量 格式:consol ...
 - 前端入门21-JavaScript的ES6新特性
		
声明 本篇内容全部摘自阮一峰的:ECMAScript 6 入门 阮一峰的这本书,我个人觉得写得挺好的,不管是描述方面,还是例子,都讲得挺通俗易懂,每个新特性基本都还会跟 ES5 旧标准做比较,说明为什 ...
 - 34.js----JS 开发者必须知道的十个 ES6 新特性
		
JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...
 - 前端学习笔记 --ES6新特性
		
前言 这篇博客是我在b站进行学习es6课程时的笔记总结与补充. 此处贴出up主的教程视频地址:深入解读ES6系列(全18讲) 1.ES6学习之路 1.1 ES6新特性 1. 变量 2. 函数 3. 数 ...
 - ES6 新特性
		
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
 - ES6新特性概览
		
本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...
 
随机推荐
- java利器------反射机制
			
java反射的概念:java的反射机制是指在运行状态下,对于一个类来说,可以得到这个类的所有方法和属性.对于一个对象来说,可以调用这个对象的人和方法和属性. 反射机制首先会拿到该类的字节码文件(Cla ...
 - Java学习个人总结
			
声明:个人原创,转载请在文章开头明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10063960.html 学习从来都是一个阶段的学习,然后进行整理与总 ...
 - python 软件管理规范
			
一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ...
 - 实习小结(五)--- SSM框架搭建(Maven项目)
			
之前分享了一个普通的SSM框架的搭建方法,感觉还是过于老套,现在都流行使用Maven来管理项目,在这分享一个使用Maven搭建的SSM(SpringMVC+Spring+MyBatis) 1.首先ma ...
 - Emscripten编译环境搭建--将C和C++编译成JS
			
Emscripten编译环境搭建--将C和C++编译成JS 需求:linux环境下用js执行c.c++文件,使用emscirpten编译器 目标:搭建好Emscripten环境 环境:Ubuntu16 ...
 - linux解压tar.gz
			
gnuzip或者tar -zxvf file.tar.gz unzip file.zip
 - thinkphp3.2 create()
			
* create作用 * 1.将表单元素中的值和数据库字段意义匹配 * 2.将数据库中没有的字段在数组中去除 if(IS_ ...
 - Spring Boot—12URL映射
			
package com.sample.smartmap.controller; import java.util.List; import org.springframework.beans.fact ...
 - atitit.js 与c# java交互html5化的原理与总结.doc
			
atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数1 1.3. 事件监听2 2. sen ...
 - Java实验案例(接口)
			
实验任务 任务一:设计实现发声接口 任务二:动物乐园 实验内容 任务一:设计实现发声接口 任务目的: 理解并掌握如何定义接口 掌握接口的实现方式 任务描述: 设计和实现一个Soundable接口,该接 ...