标签模板“:标签模板”的一个重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容
(理解不了)
let message = SaferHTML`<p>${sender} has sent you a message.</p>`;
function SaferHTML(templateData) {
let s = templateData[0];
for (let i = 1; i < arguments.length; i++) {
let arg = String(arguments[i]);
// Escape special characters in the substitution.
s += arg.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
// Don't escape special characters in the template.
s += templateData[i];
}
return s;
}
字符串新增方法:
Strng.raw()
该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法
String.raw()方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。
String.raw()本质上是一个正常的函数,只是专用于模板字符串的标签函数。如果写成正常函数的形式,它的第一个参数,应该是一个具有raw属性的对象,且raw属性的值应该是一个数组,对应模板字符串解析后的值。
实例方法:
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
这三个方法都支持第二个参数,表示开始搜索的位置。
let s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
使用第二个参数n时,endsWith 的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。
reapt : 将字符串重复指定的次数:
'ha'.reapt(3.4);// hahaha 重复了三次 参数是小数则自动取整
'ha'.reapt('3');// hahaha 重复了三次 参数是字符串,则会先转换成数字
'ha'.reapt('sadsd');// 乱七八糟输入了一堆 结果是空 参数NaN等同于 0
//repeat的参数是负数或者Infinity,会报错。
padStart, padEnd: 补全字符串长度
//指定补全字符串
'x'.padStart(10,'abc'); //会在x 前面用abc来补全,凑够十位的长度 'abcabcabcx'
'X'.padEnd(10,'abc');//会在x 后面用 abc 来补全,凑够十位的长度 'xabcabcabc'
// 如果补全长度小于或者等于原字符串的长度,则返回原字符串
'x'.padStart(1,'a'); // x
//不指定补全字符串,默认用空格补全
'x'.padStart(10); //' x',九个空格
字符串补全的用途:
1.格式提示:
let str = '12';
console.log(str.padStart(10,'YYYY-MM-DD'));// YYYY-MM-12
2.得到指定位数的字符串:
let str = '4234';
console.log(str.padStart(10,'0'));//不够十位的用零补全
trim
trim():去除首尾空格
trimStart() 或 trimLeft(): 去除字符串头部的空格
trimEnd() 或 trimRight() : 去除字符串尾部的空格
扩:(使用正则去除字符串)
去除左边:/^\s*/
去除右边:/\s*$/
去除左右两边:/(^\s*|\s*$)/
去除所有:/\s*/