我是看了http://wiki.jikexueyuan.com/project/es6/string.html写的笔记,中间加了一些自己的理解。
gangkaishi
一开始介绍了一些编码之类的东西,看的云里雾里的,也不是很懂,就不写在这里了,有兴趣的朋友可以点上面的连接去看看。
写一些我个人工作中会用到的吧。
string对象的方法
回顾下:
charAt(index):现实指定位置的字符
concat():连接字符串
indexOf():检索字符串(注意大小写,没找到返回-1)
lastIndexOf():从后面检索
match() 找到匹配表达式的字符串
search()检索与正则表达式想匹配的值
replace(要不替换的,用来替换的)
slice(start,[end]) 提取字符串的片段,返回新字符串
substr(start,[length]) 截取字符串
substring(start,[end])截取字符串 没有负值
split(以什么分割,[分割后数组最大长度]) 将字符串分割为数组
想不起具体用法的戳:http://www.w3school.com.cn/jsref/jsref_obj_string.asp
言归正传
includes():返回布尔值,表示是否找到了参数字符串
startsWith():布尔,参数字符串是否在源字符串的头部
endswith():是否在尾部
都支持第二个参数,表示开始搜索的位置。
var s = "Hello world!";
s.startsWith("Hello") // true
s.endsWith("!") // true
s.includes("o") // true
repeat()
返回一个新字符串,表示原字符串重复了N次
'x'.repeat(3) //'xxx'
正则表达式的y修饰符
Regexp.escape()
模板字符串
//原
$("#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!
`);
用反引号” ` “标识。可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中
模板字符串中嵌入变量,需要将变量名写在${}之中
大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性
console.log(`${x} + ${y} = ${x+y}`)
模板字符串之中还能调用函数
console.log(`foo ${fn()} bar`);
总之模板字符串,给我们一种很随意的,想编写不同代码一样的感觉。
标签模板
是跟着模板字符串,相关联的一种方法,暂时不做讨论,看连接吧。哈哈(尴尬又不失礼貌的微笑)
String.raw()
String.raw 方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。
String.raw`Hi\n${2+3}!`;
// "Hi\\n5!"
String.raw`Hi\u000A!`;
// 'Hi\\u000A!'
也不多解释了。