前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串的扩展

字符串的扩展

原创
作者头像
李才哥
修改2021-02-23 14:31:44
4280
修改2021-02-23 14:31:44
举报
文章被收录于专栏:李才哥李才哥

字符串的扩展

字符的 Unicode 表示法

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

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

codePointAt()

JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节

对于这种4个字节的字符,charAt方法无法读取整个字符,charCodeAt方法只能分别返回前两个字节和后两个字节的值

ES6 提供了codePointAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。

对于那些两个字节储存的常规字符,它的返回结果与charCodeAt方法相同

codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下

String.fromCodePoint()

ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符

ES6 提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足

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

字符串的遍历器接口

ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历

这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点

at()

ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符

有一个提案,提出字符串实例的at方法,可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符

有一个提案

normalize()

ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化

includes(), startsWith(), endsWith()

JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中

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

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

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

repeat()

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

参数如果是小数,会被取整

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

如果参数是 0 到-1 之间的小数

padStart(),padEnd()

如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全

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

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串

如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串

如果省略第二个参数,默认使用空格补全长度

matchAll()

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

模板字符串

模板字符串(template string)是增强版的字符串,用反引号(`)标识

如果在模板字符串中需要使用反引号,则前面要用反斜杠转义

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中

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

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

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

实例:模板编译

该模板使用<%...%>放置 JavaScript 代码,使用<%= ... %>输出 JavaScript 表达式

标签模板

“标签模板”的一个重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容

String.raw()

String.raw方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串

模板字符串的限制

模板字符串默认会将字符串转义,导致无法嵌入其他语言

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符的 Unicode 表示法
    • JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点
      • ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符
      • codePointAt()
        • JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节
          • 对于这种4个字节的字符,charAt方法无法读取整个字符,charCodeAt方法只能分别返回前两个字节和后两个字节的值
            • ES6 提供了codePointAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。
              • 对于那些两个字节储存的常规字符,它的返回结果与charCodeAt方法相同
                • codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下
                • String.fromCodePoint()
                  • ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符
                    • ES6 提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足
                      • 如果String.fromCodePoint方法有多个参数,则它们会被合并成一个字符串返回
                      • 字符串的遍历器接口
                        • ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历
                          • 这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点
                          • at()
                            • ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符
                              • 有一个提案,提出字符串实例的at方法,可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符
                              • normalize()
                                • ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化
                                • includes(), startsWith(), endsWith()
                                  • JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中
                                    • includes():返回布尔值,表示是否找到了参数字符串
                                      • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部
                                        • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
                                        • repeat()
                                          • repeat方法返回一个新字符串,表示将原字符串重复n次
                                            • 参数如果是小数,会被取整
                                              • 如果repeat的参数是负数或者Infinity,会报错
                                                • 如果参数是 0 到-1 之间的小数
                                                • padStart(),padEnd()
                                                  • 如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全
                                                    • padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串
                                                      • 如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串
                                                        • 如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串
                                                          • 如果省略第二个参数,默认使用空格补全长度
                                                          • matchAll()
                                                            • matchAll方法返回一个正则表达式在当前字符串的所有匹配
                                                            • 模板字符串
                                                              • 模板字符串(template string)是增强版的字符串,用反引号(`)标识
                                                                • 如果在模板字符串中需要使用反引号,则前面要用反斜杠转义
                                                                  • 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中
                                                                    • 模板字符串中嵌入变量,需要将变量名写在${}之中
                                                                      • 模板字符串之中还能调用函数
                                                                        • 模板字符串甚至还能嵌套。
                                                                        • 实例:模板编译
                                                                          • 该模板使用<%...%>放置 JavaScript 代码,使用<%= ... %>输出 JavaScript 表达式
                                                                          • 标签模板
                                                                            • “标签模板”的一个重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容
                                                                            • String.raw()
                                                                              • String.raw方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串
                                                                              • 模板字符串的限制
                                                                                • 模板字符串默认会将字符串转义,导致无法嵌入其他语言
                                                                                领券
                                                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档