模版字符串
ES6新增内容
模版字符串保持字符串格式不变
- 普通字符串
1
2const str = '渡荆门送别\n李白\n渡远荆门外,来从楚国游。\n山随平野尽,江入大荒流。\n月下飞天镜,云生结海楼。\n仍怜故乡水,万里送行舟。';
console.log(str); // 输出见下图- 模版字符串
1
2
3
4
5
6
7
8
9
10
11// 普通字符串无法换行定义
const str = `
渡荆门送别
李白
渡远荆门外,来从楚国游。
山随平野尽,江入大荒流。
月下飞天镜,云生结海楼。
仍怜故乡水,万里送行舟。
`;
console.log(str); // 输出见下图模版字符串中可以使用变量
关于
reduce
API会在之后讲解- 普通字符串模版拼接
1
2
3
4
5
6
7
8
9const prace = {title: '渡荆门送别', autor: '李白', content: ['渡远荆门外,来从楚国游。', '山随平野尽,江入大荒流。', '月下飞天镜,云生结海楼。', '仍怜故乡水,万里送行舟。']}
const render = function (accumulator, currentValue, index) {
return index === 1 ? '<p>' + accumulator + '</p>' + '<p>' + currentValue + '</p>' : accumulator + '<p>' + currentValue + '</p>';
}
const nodes = '<article><h3>' + prace.title + '</h3><address>' + prace.autor + '</address>' + prace.content.reduce(render) + '</article>';
document.write(nodes); // 输出看下图- 在模版字符串中使用变量拼接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15const prace = {title: '渡荆门送别', autor: '李白', content: ['渡远荆门外,来从楚国游。', '山随平野尽,江入大荒流。', '月下飞天镜,云生结海楼。', '仍怜故乡水,万里送行舟。']}
const render = function (accumulator, currentValue, index) {
return index === 1 ? `<p>${accumulator}</p><p>${currentValue}</p>` : `${accumulator} <p>${currentValue}</p>`;
}
const nodes = `
<article>
<h3>${prace.title}</h3>
<address>        ${prace.autor}</address>
${prace.content.reduce(render)}
</article>
`;
document.write(nodes); // 输出看下图![image-20191101161453357](/Users/mac/Library/Application Support/typora-user-images/image-20191101161453357.png)
.includes
ES6新增API
判断一个字符串是否包含在另一个字符串中,返回
true
或false
语法
str.includes(searchString[, position])
- searchString 要搜索的字符串
- position 从指定位置开始检索
1
2
3
4
5
6
7
8
9
10
11
12const str = `
渡荆门送别
李白
渡远荆门外,来从楚国游。
山随平野尽,江入大荒流。
月下飞天镜,云生结海楼。
仍怜故乡水,万里送行舟。
`;
console.log(str.includes('李白')); // true
console.log(str.includes('李白', 40)); // false 从40开始搜索,40之前的字符串会被忽略 检索不到
// 注意字符串的定义是使用模版字符串,顾下标为0的元素是空格而不是”渡“
.startsWith
ES6新增API
判断一个字符串是否在另一个字符串的开始位置(准确说:判断当前字符串是否以一个给定的字符串开始的),返回
true
或false
语法
str.startsWith(searchString[, position])
- searchString 要搜索的字符串
- position 从指定位置开始检索
1
2
3const str = '渡荆门送别李白渡远荆门外,来从楚国游。山随平野尽,江入大荒流。月下飞天镜,云生结海楼。仍怜故乡水,万里送行舟。';
console.log(str.startsWith('渡荆门送别')); // true
console.log(str.startsWith('渡荆门送别', 3)); // false
.endsWith
ES6新增API
判断一个字符串是否在另一个字符串的结束位置(准确说:判断当前字符串是否以一个给定的字符串结束的),返回
true
或false
语法
str.endsWith(searchString[, position])
- searchString 要搜索的字符串
- position 从指定位置开始检索 默认为str.length
1
2
3const str = '渡荆门送别李白渡远荆门外,来从楚国游。山随平野尽,江入大荒流。月下飞天镜,云生结海楼。仍怜故乡水,万里送行舟。';
console.log(str.endsWith('万里送行舟。')); // true
console.log(str.endsWith('万里送行舟。', 54)); // false
.padStart
ES8新增API
用一个字符串填充当前字符串到指定长度。从字符串左侧开始填充
适用场景: 月份补0,倒计时时分秒补0
语法
str.padStart(targetLength [, padString])
- targetLength 目标长度。如果目标长度小于当前字符串长度,会返回字符串本身
- padString 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的缺省值为 “ “
1
2
3const date = new Date();
const minutes = date.getMinutes();
console.log(`${minutes}`.padStart(2, '0')); // 如果你获取到的分钟数是一位,那么你此时可以看到会在开始位置补0
.padEnd
ES8新增API
用一个字符串填充当前字符串到指定长度。从字符串右侧开始填充
语法
str.padEnd(targetLength [, padString])
- targetLength 目标长度。如果目标长度小于当前字符串长度,会返回字符串本身
- padString 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的缺省值为 “ “
1 | const str = '渡远荆门外,'; |
.trim
- 删除字符串两端的空白;空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)
- 适用场景: input表单验证表单提交
- 语法
str.trim()
1 | <template> |
.trimStart
- ES10 新增API
- 去除字符串开始位置(左侧)空白
- 语法
str.trimStart()
1 | const str = ` |
.trimEnd
- ES10 新增API
- 去除字符串结束位置(右侧)空白
- 语法
str.trimEnd()
1 | const str = ` |
.repeat
- ES6 新增API
- 将一个字符串重复N次,并返回一个新的字符串
- 语法
const resultString = str.repeat(count);
count
要重复的次数 Number类型,不能为负数,如果传入的是String会先转换成Number,如果是小数会向下取整
1 | const str = '渡远荆门外'; |
.split
- 根据指定字符将字符串分割成数组
- 语法
str.split([separator[, limit]])
separator
指定分割的字符,可以为正则表达式 可选 如果不传返回[str]
limit
限制分割数组长度 如果长度超过本身可分割后的长度或为负数 都会返回本身可分割的数组
1 | const str = ' 渡 远 荆 门 外 '; |