- Unicode表示法
- 模板字符串
- String.prototype.fromCodePoint()
- String.prototype.includes()
- String.prototype.startsWith()
- String.prototype.endsWith()
String.prototype.repeat() ```javascript { console.log(“a”, “\u0061”); // a a console.log(“s”, “\u20BB7”); // s ₻7
console.log(“s”, “\u{20BB7}”); // s 𠮷 }
{ let s = “𠮷”; let s1 = “𠮷a”;
// es5
console.log("length", s.length); // length 2
console.log("0", s.charAt(0)); // 0 �
console.log("0", s.charAt(1)); // 0 �
console.log("at0", s.charCodeAt(0)); // at0 55362
console.log("at1", s.charCodeAt(1)); // at1 57271
// es6
console.log("length", s1.length); // length 3
console.log("code0", s1.codePointAt(0)); // code0 134071
console.log("code0", s1.codePointAt(0).toString(16)); // code0 20bb7
console.log("code1", s1.codePointAt(1)); // code1 57271
console.log("code2", s1.codePointAt(2)); // code2 97
}
{ // es5 console.log(String.fromCharCode(“0x20bb7”)); // ஷ // es6 console.log(String.fromCodePoint(“0x20bb7”)); // 𠮷 }
{ let str = “\u{20bb7}abc”;
// es5
for (let i = 0; i < str.length; i++) {
console.log("es5", str[i]);
}
// es5 �
// es5 �
// es5 a
// es5 b
// es5 c
// es6
for (let code of str) {
console.log("es6", code);
}
// es6 𠮷
// es6 a
// es6 b
// es6 c
}
{ // includes():返回布尔值,表示是否找到了参数字符串。 // startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。 // endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。 let str = “string”; console.log(“includes”, str.includes(“r”)); // includes true console.log(“includes”, str.includes(“c”)); // includes false
console.log("start", str.startsWith("str")); // start true
console.log("end", str.endsWith("str")); // end false
}
{ // repeat 方法返回一个新字符串,表示将原字符串重复n次。 let str = “abc”; console.log(str.repeat(2)); // abcabc console.log(‘na’.repeat(0);); // “”
// 参数如果是小数,会被取整。
console.log('na'.repeat(2.9)); // "nana"
// 如果repeat的参数是负数或者Infinity,会报错。
console.log('na'.repeat(Infinity)); // RangeError
console.log('na'.repeat(-1)); // RangeError
// but 如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。
console.log('na'.repeat(-0.9)); // ""
// 参数NaN等同于 0。
console.log('na'.repeat(NaN)); // ""
// 如果repeat的参数是字符串,则会先转换成数字。
console.log('na'.repeat('na')); // ""
console.log('na'.repeat('3')); // "nanana"
}
{
let name = “wuchendi”;
let info = “hello world”;
let m = i am ${name},${info}
;
console.log(m); // i am wuchendi,hello world
}
{ // ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。 // padStart()用于头部补全,padEnd()用于尾部补全。 console.log(“1”.padStart(2, “0”)); // 01 console.log(“1”.padEnd(2, “0”)); // 10
// 如果省略第二个参数,默认使用空格补全长度。
console.log("1".padStart(4)); // " 1"
console.log("1".padEnd(4)); // "1 "
// 用途
console.log("24".padStart(10,"YYYY-MM-DD")); // "YYYY-MM-24"
console.log("09-24".padStart(10,"YYYY-MM-DD")); // "YYYY-09-24"
}
{ // trimStart(),trimEnd() // ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。 const s = “ abc “; console.log(s.trim()); // “abc”; console.log(s.trimStart()); // “abc “; console.log(s.trimEnd()); // “ abc”;
}
{
// 标签模板
let user = {
name: “wcd”,
info: “hello world”
};
console.log(abci am ${user.name},${user.info}
); // i am ,,,wcdhello world
function abc(s, v1, v2) {
console.log(s, v1, v2); // [ ‘i am ‘, ‘,’, ‘’ ] ‘wcd’ ‘hello world’
return s + v1 + v2;
}
}
{
// String.raw 方法往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。
console.log(String.rawHi\n${1 + 2}
); // Hi\n3
console.log(Hi\n${1 + 2}
); // Hi 3
}
```