字符串的扩展

1. unicode

JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。

"\u0061"

// "a"

但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表示。

"\uD842\uDFB7" // ""

"\u20BB7" // " 7"

上面代码表示,如果直接在\u后面跟上超过0xFFFF的数值(比如\u20BB7),JavaScript 会理解成\u20BB+7。由于\u20BB是一个不可打印字符,所以只会显示一个空格,后面跟着一个7。

ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符

"\u{20BB7}" // ""

"\u{41}\u{42}\u{43}" // "ABC"

let hello = 123; hell\u{6F} // 123

'\u{1F680}' === '\uD83D\uDE80' // true

上面代码中,最后一个例子表明,大括号表示法与四字节的 UTF-16 编码是等价的。

有了这种表示法之后,JavaScript 共有 6 种方法可以表示一个字符。

'\z' === 'z' // true

'\172' === 'z' // true

'\x7A' === 'z' // true

'\u007A' === 'z' //true

'\u{7A}' === 'z' // true

2. codePointAt

3.String.fromCodePoint

4.字符串遍历 

es 可以使用 for of 遍历字符串

5.at 方法

6.normalize

7. includes() startsWith() endsWith()

传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

    includes():返回布尔值,表示是否找到了参数字符串。

    startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。

    endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

这三种方法都支持第二个参数,表示开始搜索的位置

8.repeat

8.1 repeat方法返回一个新字符串,表示将原字符串重复n次。

'x'.repeat(3) //

"xxx" 'hello'.repeat(2) //

"hellohello" 'na'.repeat(0) // ""

8.2 如果是小数则取整

'na'.repeat(2.9) // "nana"

8.3 如果repeat的参数是负数或者Infinity,会报错。

8.4 如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。

8.5 参数NaN等同于 0。

8.6 如果repeat的参数是字符串,则会先转换成数字

9.padStart() padEnd()

'x'.padStart(5, 'ab') // 'ababx'

'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'

'x'.padEnd(4, 'ab') // 'xaba'

上面代码中,padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

10 模版字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如

    标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。

模板字符串中嵌入变量,需要将变量名写在${}之中。

模板字符串之中还能调用函数。

如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

模板字符串甚至还能嵌套。

11模版编译(略)

12 标签模版(略)

13 String.raw()(略)

14 模版字符串的限制(略)

你可能感兴趣的:(字符串的扩展)