ES6字符串的新增方法

1.String.fromCodePoint()

es5提供的String.fromCharCode方法,用于从Unicode码点返回对应字符,但是这个方法不能识别点大于0xFFFF的字符。该方法可以试别。

codePointAt()方法相反。返回字符串码点。

如果String.fromCodePoint方法又多个参数,则他们会被合并成一个字符串返回。

注意: fromCodePoint方法定义在String对象上,而codePointAt方法定义在字符串的实例对象上。

2.String.raw()

方法返回一个斜杠都被转义的字符串(即斜杠前面再加一个斜杠),往往用于模板字符串的处理方法。
String.rawHi\n${2+3} //实际返回 Hi\n5
如果原字符串的斜杠已经转义,它还是会进行再次转义。
String.rawHi\\n //返回 Hi\\n

该方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。本质是一个正常的函数,只是专用于模板字符串的标签函数。如果写成正常的函数的形式,它的第一个参数,应该是一个具有raw属性的对象,且raw属性的值应该是一个数组,对应模板字符串解析后的值。

String.raw({raw: ['foo', 'bar'], 1+2}) // foo3bar

上面代码中,String.raw()方法的第一个参数是一个对象,它的raw属性等同于原始的模板字符串解析后得到的数组。

作为函数,他的代码实现基本如下

String.raw =  function(strings, ...values) {
  let output = " "
  let index
  for(index=0;index<values.length; index++) {
    output += strings.raw[index] +values[index]
  }
  output += strings.raw[index]
  return output
}

3.实例方法 codePointAt()

js内部,字符以utf-16的格式储存,每个字符固定为2个字节,对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),js会认为它们是两个字符。
es6提供该方法,能够正确处理4个字节储存的字符,返回一个字符的码点。

4.实例方法 normalize()

许多欧洲语言有语调符号和重音符号。为了表示他们,Unicode提供了两种方法。一种是直接提供重音符号的字符,比如Ǒ(\u01D1),另一种是提供合成符号,即原字符与重音符号的合成,两个字符合成一个字符,比如O(\u004F)和ˇ(\u030C)合成Ǒ(\u004F\u030C)。

这两种表示方法在视觉和语义上都是等价,但js不能识别。

'\u01D1'==='\u004F\u030C'    //false
'\u01D1'.length // 1
'\u004F\u030C'.length // 2

上面代码表示,js将合成字符视为两个字符,导致两种表示方法不相等。
es6提供字符串实例的normalize方法,用来将字符的不同表示方法统一为同样的形式,这成为Unicode正规化。

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

该方法可接受一个参数来制定normalize的方式,参数四个可选值:
NFC 默认参数,表示“标准等价合成”,返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
NFD 表示“标准等价分解”,即在标准等价的前提下,返回合成字符分解的多个简单字符。
NFKC 表示“兼容等价合成”,返回合成字符串。所谓“兼容等价”,指的是语义上存在等价,视觉上不等价。比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。
NFKD 表示“兼容等价分解”,即在兼容等价的前提下,返回合成字符分解的多个简单字符。

'\u004F\u030C'.normalize('NFC').length // 1'\u004F\u030C'.normalize('NFD').length // 2

上述代码表示,NFC参数返回支付的合成形式,NFD参数返回字符的分解形式。
不过normalize方法目前不能识别三个或三个以上字符的合成。这种情况下,还是只能用正则表达式,通过Unicode编号区间判断。

5.实例方法 includes,startsWith,ensWith

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

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

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

这三个方法都支持第二个阐释,表示开始搜索的位置。使用第二个参数n时,endsWith与其他两个方法有所不同,它针对前n个字符,而其他两个针对从第n个位置知道字符串结束。

6.实例方法 repeat

返回新的字符串,表示将原字符串重复n次
参数如果是小数,会被取
参数是负数或者Infinity,会报错
如果参数是0到-1之间的小数,则会等同于0,这是因为会先进行取整运算,0到-1之间的小数,取整以后等于-0,repeat视同为0
参数NaN等同于0
参数是字符串,则先转换成数字。

7.实例方法 padStart,padEnd

字符串补全长度的功能,如果某个字符串不够制定长度,会在头部或者尾部补全。padStart头部补全,padEnd尾部补全。
两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
如果原字符串长度,等于或者大于最大长度,则字符串补全不生效,返回原字符串。
如果用来补全的字符串与原字符串两者长度之和超过了最大长度,则会截去超出位数的补全字符串。
如果省略第二个参数,默认使用空格补全长度。
常见用途是为数值补全位数,另一个是提示字符串格式。

8.实例方法 trimStart,trimEnd

与trim行为一致,消除空格,返回的都是新字符串,不会修改原始字符串。除了空格键,这两个方法对字符串头部或尾部的tab键、换行符等不可见的空白符号也有效。浏览器还部署了额外两个方法,分别是他们的别名trimLeft,trimRight

9.实例方法 matchAll

该方法返回一个正则表达式在当前字符串的所有匹配。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容