日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECMAScript6 新特性——“字符串的扩展”

發(fā)布時間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ECMAScript6 新特性——“字符串的扩展” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 字符串的Unicode表示法

ES6 只要將碼點放入大括號,就能正確解讀該字符;

var x = "\u20bb7"; document.write(x); //?7 var x = "\u{20bb7}"; document.write(x); //? 可正確返回

2 codePointAt()

JavaScript對于那些需要4個字節(jié)儲存的字符(Unicode碼點大于0xFFFF的字符),JavaScript會認(rèn)為它們是兩個字符。

var s = "?";s.length // 2 s.charAt(0) // '' s.charAt(1) // '' s.charCodeAt(0) // 55362 s.charCodeAt(1) // 57271

ES6提供了codePointAt方法,能夠正確處理4個字節(jié)儲存的字符,返回一個字符的碼點。

var x = "\u{20bb7}"; console.log(x); //吉 console.log(x.length); console.log(x.codePointAt(0)); //134071 console.log(x.codePointAt(0).toString(16)); //20bb7 console.log(x.codePointAt(1)); //57271

codePointAt(0)返回的是十進制碼點;codePointAt(1)則返回的結(jié)果與charCodeAt方法返回的結(jié)果相同

3 String.fromCodePoint()

ES5提供String.fromCharCode方法,用于從碼點返回對應(yīng)字符,但是這個方法不能識別32位的UTF-16字符(Unicode編號大于0xFFFF)。

ES6提供了String.fromCodePoint方法,可以識別0xFFFF的字符,彌補了String.fromCharCode方法的不足。在作用上,正好與codePointAt方法相反。

console.log(String.fromCharCode("0x20bb7")); //? console.log(String.fromCodePoint("0x20bb7")); //吉

4 字符串的遍歷器接口

ES6為字符串添加了遍歷器接口,使得字符串可以被for...of循環(huán)遍歷。

這個遍歷器最大的優(yōu)點是可以識別大于0xFFFF的碼點

var text = String.fromCodePoint("0x20bb7"); //吉 for (let i = 0; i < text.length; i++) {console.log(text[i]);//�//� } for (let codePoint of text) {console.log(codePoint); //? }

5 at()

ES7為字符串實例提供了at方法,可以識別Unicode編號大于0xFFFF的字符。

6 normalize()

ES6提供字符串實例的normalize()方法,用來將字符的不同表示方法統(tǒng)一為同樣的形式,這稱為Unicode正規(guī)化。

'\u01D1'.normalize() === '\u004F\u030C'.normalize() // true

不過,normalize方法目前不能識別三個或三個以上字符的合成。

7 includes(),startsWith(),endsWith()

傳統(tǒng)上,JavaScript只有indexOf方法,可以用來確定一個字符串是否包含在另一個字符串中。ES6又提供了三種新方法。

  • includes():返回布爾值,表示是否找到了參數(shù)字符串。

  • startsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。

  • endsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的尾部。


var str = "string"; console.log(str.includes("r")); //True console.log(str.startsWith("str")); //True console.log(str.endsWith("g")); //True

另外,他們都支持第二個參數(shù)用來表示開始搜索的位置,但endsWith針對的則是前n個字符

8 repeat()

repeat方法返回一個新字符串,表示將原字符串重復(fù)n次。

var str = "string"; console.log(str.repeat(2)); //stringstring

9 padStart(),padEnd()

padStart用于頭部補全,padEnd用于尾部補全。

兩個參數(shù):1個是最小字符串長度;另一個是補全的字符串

10 模板字符串

模板字符串(template string)是增強版的字符串,用反引號(`)標(biāo)識。它可以當(dāng)作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量。

var name = "Oliver"; //變量 var info = `hello worldwelcome you`; //多行字符串 console.log(`hello ${name}`,info); //嵌套變量,輸出多行字符串

變量應(yīng)該寫在${}大括號里面,并且可以放入任意的JS表達式;

11 標(biāo)簽?zāi)0?/h1>

下面的例子實際上是函數(shù)參數(shù)如下的調(diào)用:

tag(["Hello ", "; Infomation: ", ""],Oliver,welcome to use the system.);

tag函數(shù)寫法如下:

let user = {name: "Oliver",info: "welcome to use the system." }; tag`Hello ${user.name}; Infomation: ${user.info}`; function tag(s, v1, v2) {console.log(s); //["Hello ", "; Infomation: ", ""]console.log(v1); //Oliverconsole.log(v2); //welcome to use the system. }

12 String.raw()

String.raw方法,往往用來充當(dāng)模板字符串的處理函數(shù),返回一個斜杠都被轉(zhuǎn)義(即斜杠前面再加一個斜杠)的字符串,對應(yīng)于替換變量后的模板字符串。

String.raw`Hi\n${2+3}!`; // "Hi\\n5!"String.raw`Hi\u000A!`; // 'Hi\\u000A!'

String.raw方法也可以作為正常的函數(shù)使用。這時,它的第一個參數(shù),應(yīng)該是一個具有raw屬性的對象,且raw屬性的值應(yīng)該是一個數(shù)組。

String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'// 等同于 String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);

總結(jié)

以上是生活随笔為你收集整理的ECMAScript6 新特性——“字符串的扩展”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。