ES6 字串方法的擴充套件

2021-10-21 03:48:33 字數 2533 閱讀 5418

repeat()

trimstart()、trimend()

replaceall()

本文基於阮一峰的es6編寫,在此只介紹一些常用的。

本來js中只有`indexof`方法可以用來確定乙個字串是否包含在另乙個字串中。es6中又新增了三種新方法。
返回布林值,表示是否找到了引數字串。
let str = 'abcde'

str.includes('a') //true

支援第二個引數,表示開始搜尋的位置
let str = 'abcdef'

str.includes('a',2) //false

上述表示從字串的第三個位置到最後是否存在字串a,很顯然不存在。

返回布林值,表示引數字串是否再源字串的頭部
let str = 'abcdef'

str.startswith('abc') // true

上述**表示字串abc是否在字串的首部。

let str = 'abcdefg'

str.startswith('abc',2) //false

上述**意為從下標為2的字元開始到最後的這段字串中,是否以字串abc開頭。

返回布林值,表示引數字串是否在源字串的尾部
let str = 'abcdefg'

str.endswith('fg') //true

str.endswith('fg',4) //false

endswith()方法的第二個引數與其他兩個略有不同,指的是前n個字元,如上,最後一句意為在源字串中的前4個字元組成的字串即'abcd'是否是以'fg'結尾的。

返回乙個新字串,將原字串重複n次
'x'.repeat(3)  // "***"  ①

'x'.repeat(2.9) // "xx" ②

'x'.repeat(0) // "" ③

'x'.repeat(-0.9) // "" ④

'x'.repeat(nan) // "" ⑤

'x'.repeat('3') // "***" ⑥

'x'.repeat(-1) //rangeerror ⑦

如果引數是乙個小數,那麼會先取整(②);如果引數是-1到0之間的小數,取值為0(④),如果是負數或是infinity,會報錯(⑦);如果是nan,等同於0(⑤),如果是字串會先轉換為數字(⑥)。

trim()方法會消除掉字串的首尾空格,trimstart()方法和trimend()方法,分別會消除字串的首部和尾部的空格。
let str = '  ab c d     '

str.trim() // "ab c d"

str.trimstart() // "ab c d "

str.trimend() // " ab c d"

一次性替換所有匹配項,返回乙個新字串,不會改變原字串。
'aabbcc'.replaceall('a','pp')   //"ppppbbcc"
第乙個引數可以是乙個字串,也可以是乙個全域性的正規表示式且必須是乙個全域性的,否則報錯。

'aabbcc'.replaceall(/a/g,'pp')   //"ppppbbcc"

'aabbcc'.replaceall(/a/,'pp') //報錯

函式的第二個引數除了為字串,也可以是乙個函式,該函式的返回值將替換掉第乙個引數匹配的文字

'aabbcc'.replaceall('a',()=> 'pp')   // "ppppbbcc"
這個替換函式可以接受多個引數,第乙個引數是捕獲到的匹配內容,第二個引數捕捉到是組匹配(有多少組匹配,就有多少個對應的引數)。此外,最後還可以新增兩個引數,倒數第二個引數是捕捉到的第乙個內容在整個字串的位置,最後乙個引數是原字串。

const str = '123abc456';

const regex = /(\d+)([a-z]+)(\d+)/g;

function replacer(match, p1, p2, p3, offset, string)

str.replaceall(regex, replacer)

// 0 (log)

// "123 - abc - 456"

借鑑字串的新增方法

ES6 字串擴充套件

1 字串可以使用 u x的形式來表達乙個字元,x叫做字元的碼點,x的範圍是0000 ffff,超過ffff的碼點需要用兩個雙位元組表示 如果我們 u後面的16進製制的值大於ffff,我們需要加乙個大括號 u讓js正確解析。2 我們應該都了解,漢字一般都需要兩個雙位元組來表示,在js中兩個位元組佔乙個...

ES6 字串的擴充套件

js中有indexof方法,來確認乙個字串是否包含在另乙個字串中。es6又提供了三中新方法 includes 返回布林值,表示是否找到了引數字串。startswith 返回布林值,表示引數字串是否在源字串的頭部。endswith 返回布林值,表示引數字串是否在源字串的尾部。let s hello w...

ES6 字串的擴充套件

1.at 返回字串給定位置的字元 charat 該方法不能識別碼點大於0xffff的字元 at 可以識別碼點大於0xffff的字元 2.includes 返回布林值,表示是否找到了引數字串 startswith 返回布林值,表示引數字串是否在源字串的頭部 endswidth 返回布林值,表示引數字串...